Python 抓取网页时需要选择正确的选择器

Python 抓取网页时需要选择正确的选择器,python,css,scrapy,screen-scraping,Python,Css,Scrapy,Screen Scraping,这是我第一次使用Scrapy,在看了几篇辅导之后,我正在尝试刮取这个url 我想获得每个用户配置文件的链接。我用我的刮壳做了如下操作 print(response.css("#main > div > div > div > div:nth-child(2) > div.hckui__layout__container > div.hckui__layout__wrapper1170 hckui__layout__fullScreenHeight >

这是我第一次使用Scrapy,在看了几篇辅导之后,我正在尝试刮取这个url

我想获得每个用户配置文件的链接。我用我的刮壳做了如下操作

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())
但我只得到[]作为输出

我想获得附件中指定的链接,有人能看一下并告诉我我的命令是否有问题吗

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

#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 

这是因为您在Chrome控制台中看到的html是用javascript构建的客户端。默认情况下,Scrapy不会在服务器发送页面源代码时解释javascript和读取页面源代码。查看我的答案以找到问题的解决方案。

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

要检查刮擦爬虫得到的响应:-

  • 开放式终端
  • 运行命令scrapy shell
  • 运行命令查看(响应)
  • 对爬虫程序的响应将显示在默认的web浏览器中

    从这个响应中,您可以检查您的爬虫是否获得了您想要抓取的内容

    正如我从响应中看到的,您在响应中没有得到Arduino_Genino,这绝对是客户端javascript呈现的一种情况

    要从这些页面中刮取数据,需要使用javascript呈现引擎,例如在本地主机8050上运行的scrapy splash

    您必须将url传递给splash渲染引擎,当javascript完全加载到localhost:8050的splash中时,经过一段时间后,您必须从那里刮取数据


    请参阅splash docs:

    以检查scrapy crawler得到的响应:-

  • 开放式终端
  • 运行命令scrapy shell
  • 运行命令查看(响应)
  • 对爬虫程序的响应将显示在默认的web浏览器中

    从这个响应中,您可以检查您的爬虫是否获得了您想要抓取的内容

    正如我从响应中看到的,您在响应中没有得到Arduino_Genino,这绝对是客户端javascript呈现的一种情况

    要从这些页面中刮取数据,需要使用javascript呈现引擎,例如在本地主机8050上运行的scrapy splash

    您必须将url传递给splash渲染引擎,当javascript完全加载到localhost:8050的splash中时,经过一段时间后,您必须从那里刮取数据


    参考splash docs:

    @noorhashem很高兴我能help@noorhashem很高兴我能帮忙