【发布时间】:2021-10-04 22:32:42
【问题描述】:
假设我有一个充满数据的数据框,一列包含不同的 url,我想在数据框的每个 url 的页面上抓取价格(非常大,超过 15k 行)。而且我希望这种抓取连续运行(当它到达网址的末尾时,它会一次又一次地开始)。每次抓取价格时都会更新数据框的最后一列(价格)。
这是一个玩具数据框的可视化示例:
Col 1 ... Col N URL Price
XXXX ... XXXXX http://www.some-website1.com/ 23,5$
XXXX ... XXXXX http://www.some-website2.com/ 233,5$
XXXX ... XXXXX http://www.some-website3.com/ 5$
XXXX ... XXXXX http://www.some-website4.com/ 2$
.
.
.
我的问题是:知道我可以使用 request/selenium/bs4 实现解决方案,使用并行方法(多线程......)抓取这些 URL 的最有效方法是什么......(我可以学得很漂亮很多东西)所以我想要一个理论答案而不是一些代码行,但如果你有一个块要发送,不要犹豫:)
谢谢
【问题讨论】:
-
我认为您在这里针对问题的错误部分。你真的不需要多线程来进行网络抓取——这是一个 IO 绑定任务。相反,您应该看看 pythons async/await (asyncio) 功能,它允许您在不需要线程的情况下同时抓取许多目标。
标签: python pandas web-scraping parallel-processing