【问题标题】:Scrapy - Shell crawls the page without any problem, but selectors failScrapy - Shell 抓取页面没有任何问题,但选择器失败
【发布时间】:2019-06-19 10:56:25
【问题描述】:

我有这个开始抓取的网址。

https://autocarro.com.br/auto-busca/carros?AutoBusca=1&qc=&qt=&q=&ai=&af=&pi=&pf=&com=&cam=&cor=&por=&est=&cid=#1

当我从scrapy shell 发送请求时,它被抓取没有任何问题。当我使用view(response) 时,我可以看到整个页面都被渲染了。这是 HTML 代码和呈现的网站。

但是,当我尝试使用选择器获取标签时,它们不起作用。好像整个 HTML 表格体都不存在了。

response.css('tbody').getall() 得到一个空表体或我要查找的 a 标签不存在。

我还检查了是否有我丢失的 AJAX 请求,但没有。这里有什么问题?

【问题讨论】:

    标签: python web-scraping scrapy css-selectors


    【解决方案1】:

    您需要检查源 HTML 代码(通常是浏览器中的 Ctrl+U)以获取源数据。对于您的 URL,您会发现目标表是从以 var COLLECTION = [ 开头的 JavaScript 代码加载的。您可以使用以下代码解析该部分:

    import json
    
    def parse(self, response):
        json_collection = response.xpath('//script[contains(., "var COLLECTION = [")]').re_first(r'var COLLECTION = (\[.+?\]);')
        data = json.loads(json_collection) # now you have everything you need here
        for element in data:
            mark = element["mar"]
            version = element["ver"]
            ........
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2018-07-28
      • 2018-09-22
      • 2019-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多