这是我在看完两本教程之后第一次使用Scrapy,我正在尝试抓取此
https://www.hackster.io/arduino/members
我想获得每个用户个人资料的链接。我按如下方式运行我的草皮
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
答案 0 :(得分:1)
这是因为您在Chrome控制台中看到的html是用javascript客户端构建的。默认情况下,Scrapy不会解释javascript并读取服务器发送的页面源。请参阅我的答案here,找到解决您问题的方法。
答案 1 :(得分:0)
要检查抓取的抓取工具得到什么响应:-
对爬虫的响应将显示在默认的Web浏览器中。
从此响应中,您可以检查抓取工具是否正在获取要抓取的内容!
正如我从响应中看到的那样,您没有在响应中得到Arduino_Genuino,这肯定是客户端javascript渲染的一种情况。
Screenshot of the webpage as visible to the crawler.
要从此类页面中抓取数据,您需要使用可在本地主机上运行的javascript渲染引擎,例如scrapy-splash:8050
您必须将URL传递到Splash呈现引擎,并且在将javascript完全加载到localhost:8050的Splash中一段时间后,必须从此处刮取数据。