Scrapy: не удается получить скрытые данные со страницы с FormRequest - PullRequest
0 голосов
/ 14 мая 2018

Я пытался очистить эту страницу .

Я не могу получить "загрузить больше результатов" ("voir plus de résultats" на французском языке) для загрузки вмой объект ответа.

Когда я выполняю очистку, я обычно использую трюк для мониторинга сети, чтобы проверить запросы AJAX, но когда я нажимаю «загрузить дополнительные результаты», активность не отображается.Вот почему я предполагаю, что результаты уже загружены, но скрыты.

Вот мой код, который возвращает a no clickable element matching clickdata {'href' :"#"}.

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from TopAchat.items import TopachatItem

class TopAchatSpider(CrawlSpider):
    name = "TopAchat1"
    start_urls = ["https://www.topachat.com/pages/marque.php"]

    rules = ( Rule(LinkExtractor(restrict_xpaths=('//*[@id="content"]/section/ul[@class="listProduct"]//a'))),
        Rule(LinkExtractor(restrict_xpaths=("//li[@class='link-visible']//a","//li[@class='display: list-item']//a")),callback='parse_item'),
        )

    def parse_item(self, response):

        item = TopachatItem()
        item["brandname"] = response.xpath("//div[@class='small']/div/text()").extract_first()[4:].split(" ")[0]
        item["href"] = response.request.url 
        item["name"] = response.xpath("//div[@class='libelle']/h1/text()").extract_first()
        item["specs"] = response.xpath("//strong[@class='big short-descr']/text()").extract_first()
        item["product_type"] = response.xpath("//nav[@class='meta small']//p//b/text()").extract_first()

        return item,scrapy.FormRequest.from_response(
            response,
            clickdata = {'href' :"#"})

Я знаю, что есть и другие способыочистить данные (а именно Selenium), но мне кажется, что я упускаю что-то очевидное, и я не могу найти это.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 14 мая 2018

У них есть это в источнике HTML:

                <li class='link-visible'>                                   <a href='/pages/detail2_cat_est_ordinateurs_puis_rubrique_est_wh_tabmul_puis_ref_est_in10092521.html'>
                                apple ipad mini 4 7.9'' retina 128 go wi-fi gris sideral (2015)                                     &nbsp;<strong>(MK9N2NF/A</strong>)                                  </a>
                        </li>
                    <li class='link-visible'>                                   <a href='/pages/detail2_cat_est_ordinateurs_puis_rubrique_est_wh_tabmul_puis_ref_est_in10103554.html'>
                                Apple iPad 32 Go Wi-Fi Or (2017)                                        &nbsp;<strong>(MPGT2NF/A</strong>)                                  </a>
                        </li>
                    <li>                                    <a href='/pages/detail2_cat_est_ordinateurs_puis_rubrique_est_wh_tabmul_puis_ref_est_in10103538.html'>
                                apple ipad 32 go wi-fi gris sideral (2017)                                      &nbsp;<strong>(MP2F2NF/A</strong>)                                  </a>
                        </li>
                    <li>                                    <a href='/pages/detail2_cat_est_ordinateurs_puis_rubrique_est_wh_tabmul_puis_ref_est_in10103545.html'>
                                Apple iPad 32 Go Wi-Fi Silver (2017)                                        &nbsp;<strong>(MP2G2NF/A</strong>)                                  </a>
                        </li>

Так что, как вы можете видеть, это //li[@class="link-visible"]/a (у вас есть это) и //li/a (вам нужно добавить это, чтобы поймать «загрузить больше результатов»)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...