【问题标题】:parse multiple web pages simultaneously同时解析多个网页
【发布时间】:2017-09-14 22:04:14
【问题描述】:

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

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

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

【问题讨论】:

  • 查看scrapy。

标签: python parsing multiprocessing lxml


【解决方案1】:

我知道你写过你知道多处理。 但是你也说你搜索了一个简单的解决方案,我认为线程提供了一个简单的解决方案。

import requests
import lxml
import threading
        
urls = ["sample.com", "sample2.com", "sample3.com"]


def scrape(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=scrape, args=(url,)).start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2017-07-29
    • 1970-01-01
    • 2014-08-23
    • 2015-09-11
    相关资源
    最近更新 更多