【问题标题】:Scraping a web page and need to pick right selector抓取网页并需要选择正确的选择器
【发布时间】:2018-10-17 16:16:04
【问题描述】:

这是我在看了几个教程后第一次使用 Scrapy,我正在尝试抓取这个 url

https://www.hackster.io/arduino/members

我想获取每个用户个人资料的链接。我按如下方式运行我的scrapy shell

print(response.css("#main > div > div > div > div:nth-child(2) > div.hckui__layout__container > div.hckui__layout__wrapper1170 hckui__layout__fullScreenHeight > div > div.common-overlay__parent__1A_nT > div.grid__gridBasic__fjt5B grid__grid__1QeD6 grid__guttersH__2MYvz grid__guttersV__3M28R > div:nth-child(1) > div.undefined hckui__layout__flexCenterItems > div.user_card__content__1YVc5 > a.hckui__typography__bodyM hckui__typography__link hckui__typography__bold::attr(href)").extract())

但我只得到 [] 作为输出

我想获取所附照片中指定的链接,任何人都可以看看并告诉我我的命令是否有问题?

url to be scraped

当我使用谷歌的 chorme 检查选项并立即复制选择器时,我得到了相同的输出

#main > div > div > div > div:nth-child(2) > div > div > div > div.common-overlay__parent__1A_nT > div > div:nth-child(1) > div > div > a
or even using

#main > div > div > div > div:nth-child(2) > div > div > div > div.common-overlay__parent__1A_nT > div 

【问题讨论】:

    标签: python css scrapy screen-scraping


    【解决方案1】:

    这是因为您在 Chrome 控制台中看到的 html 是在 javascript 中构建的客户端。默认情况下,Scrapy 不会解释 javascript 并读取服务器发送的页面源。请参阅我的回答 here 来为您的问题找到解决方案。

    【讨论】:

    • @noorhashem 很高兴我能帮上忙
    【解决方案2】:

    检查scrapy爬虫得到什么响应:-

    1. 打开终端
    2. 运行命令scrapy shell https://www.hackster.io/arduino/members
    3. 运行命令查看(响应)

    对爬虫的响应将显示在您的默认网络浏览器中。

    从这个响应中,您可以检查您的爬虫是否正在获取您要抓取的内容!

    从响应中我可以看出,您没有在响应中获得 Arduino_Genuino,这绝对是客户端 javascript 渲染的情况。

    Screenshot of the webpage as visible to the crawler.

    要从此类页面刮取数据,您需要使用在 localhost:8050 上运行的 javascript 渲染引擎,例如 scrapy-splash

    您必须将要抓取的 url 传递给启动画面渲染引擎,并且在 javascript 完全加载到 localhost:8050 的启动画面中经过一些超时后,您必须从那里抓取数据。

    参考初始文档:https://splash.readthedocs.io/en/stable/api.html

    【讨论】:

      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2021-05-29
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      相关资源
      最近更新 更多