我是网络爬虫的新手,当我尝试用无限滚动方式爬网时遇到了一些问题。我看了其他一些问题,但找不到答案,所以希望有人可以在这里帮助我。
我正在http://www.aastocks.com/tc/stocks/analysis/stock-aafn/00001/0/all/网站上工作。我有以下(非常基本的)代码段,我可以在第一页上获得每篇文章(20个条目)。
def parse(self, response):
# collect all article links
news = response.xpath("//div[starts-with(@class,'newshead4')]//a//text()").extract()
# visit each news link and gather news info
for n in news:
url = urljoin(response.url, n)
yield scrapy.Request(url, callback=self.parse_news)
但是,我不知道如何转到下一页。我在线阅读了一些教程,例如转到Inspect-> Network并在滚动后观察Request URL,它返回http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx?cat=all&newstime=905169272&newsid=NOW.895783&period=0&key=&symbol=00001
,在这里找不到分页指示或其他模式可以帮助我转到下一页。当我将此链接复制到新选项卡时,我看到带有下一页新闻的json文档,但没有url。在这种情况下,我该如何解决?非常感谢!
答案 0 :(得分:-1)
链接
使用诸如Android Studio
之类的值提供JSON数据,您可以使用它们生成新闻链接
NOW.XXXXXX
如果向下滚动几次,您将看到接下来的页面会生成相似的链接,但是具有不同的参数"http://www.aastocks.com/tc/stocks/analysis/stock-aafn-con/00001/" + "NOW.XXXXXX" + "/all"
,newstime
。
如果您检查JSON数据,则会看到最后一项的值newsid
和'dtd'
与用于下载的链接中的参数'id'
,newstime
相同下一页的JSON数据。
因此,您可以生成链接以获取下一页的JSON数据。
newsid
使用"http://www.aastocks.com/tc/resources/datafeed/getmorenews.ashx?cat=all&newstime=" + DTD + "&newsid=" + ID + "&period=0&key=&symbol=00001"
requests