同时解析多个网页

时间:2017-09-14 22:04:14

标签: python parsing multiprocessing lxml

我经常需要从互联网网页上解析/抓取信息。我出于此目的使用lxmlrequests。几乎在所有情况下,信息本质上是连续的,如一堆股票相关信息或日期信息。目前,我运行列表推导来运行循环。我想知道是否有一种方法可以同时解析多个页面?我知道多处理/分叉,但我会感谢一些更简单的解决方案。这是我的示例代码

[lxml.html.fromstring(requests.get(i).content).xpath("//tr//td//text()") for i in ("some_list of url addresses")]

这很好但我希望能够在循环的单次运行中解析多个(可能多达8个)网页,有点类似于在浏览器中打开多个网页。

1 个答案:

答案 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()