繁体   English   中英

如何使用beautifulsoup从数据框中的URL列表中获取特定html div的内容?

[英]How can I fetch content from a particular html div from a list of URLs in a dataframe using beautifulsoup?

我正在分析来自多个 URL 中特定 div 的文本。

我发现的所有示例都要求输入单个 URL,但就我而言,我正在批量工作。

有什么建议?

让我们把这个问题分成几部分。

首先,我们要获取单个 URL 并返回其对应的 HTML 文档。 单独执行此操作还允许我们以透明的方式处理错误和超时。

def get_raw_content(url):
     tmp = requests.get(r.url, timeout=10)
     return tmp.content if tmp.status_code == 200 else None

接下来是有趣的一点。 给定一个 HTML 文档,我们现在想要获取特定 div 的内容。 这是您的原始代码应该在的地方。

您也可以为此使用 XPATH。 但是 BeautifulSoup 不支持 XPATH。 我已经编写了一个模块,它为 bs4 提供了一个简单的 XPATH 解释器。 如果您需要,请在评论中告诉我。

def get_div_content(url):

    # first fetch the content for this URL
    html_text = get_raw_content(url)
    if html_text is None:
        return None

    # work with beautiful soup to fetch the content you need
    # TODO : insert your code for 1 URL here
    return None

现在,正如其他评论所示,我们只需遍历我们拥有的所有 URL,然后依次对每个 URL 执行单个 URL 的代码。

def fetch_all(urls):
    for url in urls:
        txt = get_div_content(url)
        print('{} {}'.format(url, txt))

最后,我们需要一些 Python 脚本的入口点。 所以我提供了这个主要方法。

if __name__ == '__main__':
    fetch_all(['http://www.google.com', 'http://www.bing.com'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM