我读了一些相关的帖子,但找不到答案。在
我正试图抓取一个有评论的网页。当站点被访问时,一开始只有10条评论,用户每次向下滚动到评论列表的末尾时,应该按“Show more”来获得10条评论(这也会在站点地址的末尾添加add10)。实际上,用户可以通过在站点地址的末尾添加\add1000(其中1000是一些额外的评论)来获得完整的评论列表。问题是,我在我的spider中使用site_url#add1000只得到前10条评论,就像site\u url一样,所以这种方法不起作用。在
我也找不到一个合适的方式,从网站上模仿原产地的要求。源AJAX url的格式是'domain/ajaxlst?par1=x&par2=y,我尝试了所有这些:
Request(url='domain/ajaxlst?par1=x&par2=y', callback=self.parse_all)
Request(url='domain/ajaxlst?par1=x&par2=y', callback=self.parse_all,
headers={all_headers})
Request(url='domain/ajaxlst?par1=x&par2=y', callback=self.parse_all,
headers={all_headers}, cookies={all_cookies})
但每次我收到404错误。谁能解释一下我做错了什么吗?在
由于请求模块不能很好地处理AJAX,您需要的是一个无头浏览器。在
这种无头浏览器之一是selenium。在
即)
通常,当您向下滚动页面时,Ajax将向服务器发送请求,然后服务器将向您的浏览器响应json/xml文件以刷新页面。在
您需要找出链接到此json/xml文件的url。通常,您可以打开firefox浏览器并打开tools/web dev/web控制台。监视网络活动,您可以轻松地捕获这个json/xml文件。在
一旦找到这个文件,就可以直接解析来自它们的评论(我推荐Python模块请求和bs4来完成这项工作),并减少大量的时间。记住使用不同的客户端和IP。对服务器好一点,它不会阻止你。在
相关问题 更多 >
编程相关推荐