[英]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.