我经常需要从互联网网页上解析/抓取信息。我出于此目的使用lxml
和requests
。几乎在所有情况下,信息本质上是连续的,如一堆股票相关信息或日期信息。目前,我运行列表推导来运行循环。我想知道是否有一种方法可以同时解析多个页面?我知道多处理/分叉,但我会感谢一些更简单的解决方案。这是我的示例代码
[lxml.html.fromstring(requests.get(i).content).xpath("//tr//td//text()") for i in ("some_list of url addresses")]
这很好但我希望能够在循环的单次运行中解析多个(可能多达8个)网页,有点类似于在浏览器中打开多个网页。
答案 0 :(得分:0)
我知道你写过你知道多处理。 但是你也说过你搜索一个简单的解决方案,我认为线程提供了这么简单的解决方案。
import requests
import lxml
import threading
urls = ["sample.com", "sample2.com", "sample3.com"]
def scrap(url):
return lxml.html.fromstring(requests.get(i).content).xpath("//tr//td//text()")
for url in urls:
if threading.active_count() < 8:
threading.Thread(target=scrap, args=(url,)).start()