【发布时间】:2019-05-01 12:46:46
【问题描述】:
我正在抓取网页(使用 Python requests 和 requests-html 模块),我需要浏览项目列表的所有页面。
在“人类用户”世界中,我单击“2”进入第二页,或单击“->”从实际页面转到下一页。
当我检查我刚才说的元素时,它们是一个<div>标签例如:
<div class="pagination__Page..."> 2 </div> 或
<div class="pagination__Page..."> -> </div>
两者都有一个链接到每个event,所以当我点击它时,会移动到下一页。
我已尝试执行 requests-HTML 文档建议的 for 循环分页,但在这种情况下它不起作用,因为没有链接到 r.html 对象,也没有链接到列表的每个页面。
当我在网站中点击这些“div”时,网址根本不会改变。
检查event(对于2的情况)它调用了一个JS函数,例如:
function() {
return a({
pageNum: e
})
}
检查event函数(对于->的情况)它调用了一个JS,比如:
function() {
return a({
direction: "right"
})
}
我想得到与单击时相同的结果,但我不知道如何。
【问题讨论】:
-
我想到了几种方法来做到这一点。 1)使用Selenium模拟打开浏览器,处理html,然后让它在下一页“点击”并重复。 2)如果你分享网址,我们可以看看它是否从 XHR 获取数据。如果是这样,您可以通过 POST 请求获取数据,其中页码是查询参数的一部分,您可以通过这种方式对其进行迭代。
-
在 Chrome/Firefox 的 DevTools 中,您可以看到所有发送到服务器的请求。您可以检查单击下一页时发送的请求,然后您可以尝试使用 python 执行相同的请求..
-
@chitown88,如果对于查询参数,您正在谈论在 url 中发送的参数,我认为这是不可能的(或者至少,我不知道该怎么做)因为,正如我之前所说,点击“下一页”后,网址不会改变。尽管如此,网址是:link。 furas,我不认为有这样的要求,它似乎是一个以某种方式完整的预加载列表,以 25 行的块显示。
-
不,我指的不是网址。我指的是xhr(如果有的话)。明天我会去看看,因为那时我不在我的笔记本电脑附近。
标签: python-3.x web-scraping python-requests python-requests-html