Scrapy:无法通过FormRequest从页面获取隐藏数据

时间:2018-05-13 22:21:54

标签: python python-3.x scrapy

我一直试图抓住this page

我似乎无法在我的回复对象中加载“加载更多结果”(法语中的“voir plusderésultats”)。

当我刮擦时,我通常使用网络监控技巧来检查AJAX请求,但是当我点击“加载更多结果”时没有显示任何活动。这就是为什么我假设结果已经加载但隐藏了。

到目前为止,这是我的代码,它会返回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 :(得分:0)

他们在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(你需要添加它来捕捉&#34;加载更多结果&#34;)