抓取框的内容包含 Python 中的无限滚动
Scraping the content of a box contains infinite scrolling in Python
我不熟悉 Python 和网络抓取。我打算在 website. I was told to look at to its Ajax requests and send similar ones. The problem is that all requests for the links are same: http://www.marketwatch.com/newsviewer/mktwheadlines 的头条新闻中抓取链接
我的问题是如何从这样的无限滚动框中提取链接。我正在使用美丽的汤,但我认为它不适合这项任务。我也不熟悉 Selenium 和 java 脚本。不过我知道如何通过 Scrapy 抓取某些请求。
确实是AJAX请求。如果您查看浏览器检查器中的网络选项卡:
您可以看到它正在发出 POST 请求以将 url 下载到文章中。
这里的每个值都是不言自明的,除了 docid 和时间戳。 docid 似乎指示要为哪个框提取文章(页面上有多个框),它似乎是附加到 <li>
元素的 id
,文章 url 存储在该元素下.
幸运的是在这种情况下 POST 和 GET 是可以互换的。似乎也不需要时间戳参数。因此,您实际上可以在浏览器中查看结果,方法是右键单击检查器中的 url 并选择 "copy location with parameters":
此示例删除了时间戳参数并将 pullCount 增加到 100,因此只需请求它,它将 return 文章 url 的 100。
您可以花更多时间对网站的运行方式以及每个关键字的用途进行逆向工程,但这是一个好的开始。
我不熟悉 Python 和网络抓取。我打算在 website. I was told to look at to its Ajax requests and send similar ones. The problem is that all requests for the links are same: http://www.marketwatch.com/newsviewer/mktwheadlines 的头条新闻中抓取链接 我的问题是如何从这样的无限滚动框中提取链接。我正在使用美丽的汤,但我认为它不适合这项任务。我也不熟悉 Selenium 和 java 脚本。不过我知道如何通过 Scrapy 抓取某些请求。
确实是AJAX请求。如果您查看浏览器检查器中的网络选项卡:
您可以看到它正在发出 POST 请求以将 url 下载到文章中。
这里的每个值都是不言自明的,除了 docid 和时间戳。 docid 似乎指示要为哪个框提取文章(页面上有多个框),它似乎是附加到 <li>
元素的 id
,文章 url 存储在该元素下.
幸运的是在这种情况下 POST 和 GET 是可以互换的。似乎也不需要时间戳参数。因此,您实际上可以在浏览器中查看结果,方法是右键单击检查器中的 url 并选择 "copy location with parameters":
此示例删除了时间戳参数并将 pullCount 增加到 100,因此只需请求它,它将 return 文章 url 的 100。
您可以花更多时间对网站的运行方式以及每个关键字的用途进行逆向工程,但这是一个好的开始。