#python #selenium #web-scraping #cmd #scrapy
#python #selenium #очистка веб-страниц #cmd #scrapy
Вопрос:
Прежде всего, извините, что формулировка проблемы слишком длинная, и я действительно ценю ваше драгоценное время. Я хочу перейти на страницу (www.tsetmc.com ). затем перейдите на указанную фиолетовую вкладку, которая показана на этом изображении # 1. наконец, просуммируйте все указанные цены, которые я отметил на этом изображении # 2. Изображение. Я записываю эти коды в командной строке :
ipython
from selenium import webdriver
driver=webdriver.Chrome('C:UsersAsusDesktopchromedriver')
driver.get('http://tsetmc.com/loader.aspx?ParTree=151311amp;i=42354736493447489')
from scrapy.selector import Selector
sel=Selector(text=driver.page_source)
violet_tab=driver.find_element_by_xpath('//*[@class="violet"]')
violet_tab.click()
html=Selector(text=driver.page_source)
sel=html.xpath('//*[@colspan="2"]//*[@class="ltr inline"]/@title')
sel.extract()
на выходе получаются следующие числа, которые я хочу:
[u’2,953,168′,
u’5,052,000′,
u’5,858,680′,
u’-1,220,339′,
u’-3,824,076′,
u’5,994,542′,
u’1,381,622′,
u’ -7,597,017′,
u’ -4,909,474′,
u’3,471,639′,
u’ 5,135,504′,
u’-4,080,390′,
u’9,708,055′,
u’400,000′,
u’6,950,000′,
u’284,559′,
u’-1,429,175′,
u’ -400,000′,
u’1,400,000′,
u’7,269,151′,
u’35,234,435′,
u’0′,
u’ -7,495,110′,
u’45,933′,
u’-2 176 425′,
u’1,748,836′,
u’0′,
u’-10 930 000′,
u’-11,600,000′,
………]
но проблема в том, что я не знаю, как написать код в моем текстовом редакторе. Я пытаюсь это :
import scrapy
from scrapy.http import Request
from scrapy import Spider
from selenium import webdriver
from scrapy.selector import Selector
from time import sleep
class Khepars444Spider(Spider):
name = 'khepars444'
allowed_domains = ['tsetmc.com/loader.aspx?ParTree=151311amp;i=42354736493447489']
def start_requests(self):
self.driver = webdriver.Chrome('C:UsersAsusDesktopchromedriver')
self.driver.get('http://tsetmc.com/loader.aspx?ParTree=151311amp;i=42354736493447489')
sleep(3) # delay 2 sec
violet_tab=self.driver.find_element_by_xpath('//*[@class="violet"]')
sleep(1)
self.logger.info('Sleeping for 1 seconds.')
violet_tab.click()
html=Selector(text=self.driver.page_source)
sel=html.xpath('.//*[@colspan="2"]')
for taghir in sel :
yield Request(taghir.xpath('.//*[@class="ltr inline"]/@title'),callback=self.parse_haghighi)
def parse_haghighi(self,response):
pass
и я ничего не получаю.
Я буду рад, если вы поможете. 🙂
Ответ №1:
Во 2-м фрагменте кода вы определяете свой класс Khepars444Spider
, но ни один из его методов не вызывается. Вероятно, лучшим способом было бы определить main
функцию, которая вызывает start_requests
, см. https://realpython.com/python-main-function /
Добавьте этот фрагмент в конец вашего 2-го кода, после чего вы сможете выполнить скрипт из командной строки.
def main():
spider = Khepars444Spider()
for request in spider.start_requests():
print(request)
if __name__ == '__main__':
main()