веб-поиск некоторых цен на TSETMC.COM страница с использованием командной строки, python, scrapy и selenium

#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()