无限滚动 - 如何刮网站

时间:2013-04-01 18:20:24

标签: python web-crawler

我正在尝试下载获取resutls时具有无限滚动的页面。我找到了ajax源码的url。当我把它放在浏览器上它工作正常,它返回json格式数据。但是当我尝试通过wget下载页面时,我收到了拒绝访问的消息。你知道为什么会这样吗?

我正在使用的命令是:

wget --cookies=on --load-cookies=cookies.txt --keep-session-cookies --user-agent=Firefox \
    "https://www.somesite.com/ajax/pagelet/generic.php/pagination?data={"collection_token":"...","cursor":"...","tab_key":"....","profile_id":"...","overview":"...","ftid":"null","sk":"..."}&__user=...&__a=1"

3 个答案:

答案 0 :(得分:1)

两种方法。

一种是使用像PhantomJs这样的库在webkit中呈现页面的DOM树,并在进行评估之前滚动页面。

第二种方法是在后台Ajax调用中找出模式并调用实际的AJAX端点

答案 1 :(得分:0)

首先,你有一个引用问题。该网址包含双引号,因此您需要使用反斜杠对其进行转义,或者使用单引号将URL括起来。

wget --cookies=on --load-cookies=cookies.txt --keep-session-cookies --user-agent=Firefox \
    'https://www.somesite.com/ajax/pagelet/generic.php/pagination?data={"collection_token":"...","cursor":"...","tab_key":"....","profile_id":"...","overview":"...","ftid":"null","sk":"..."}&__user=...&__a=1'

答案 2 :(得分:-1)

使用wget时,您向页面发送GET请求,但AJAX使用POST请求。 在使用python时,使用urllib2创建POST请求通常可以解决问题。如果您需要进一步的帮助,请告诉我。