python - 如何使用 beautifulsoup 从数据框中的 URL 列表中获取特定 html div 的内容?
问题描述
我正在分析来自多个 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'])
推荐阅读
- java - 使用 Java Microsoft graph SDK 在 Outlook 中添加成员
- java - java - 如何在java中找到2D ArrayList的列的唯一值?
- jquery - Jquery 显示隐藏切换
- c# - C# - 由线程回调运行的定时器只运行一次
- php - 带有一些选项的数组差异
- javascript - 无法使用super调用继承的类函数
- opengl - opengl旋转看不到背面
- qt5 - 删除布局是否会删除其子布局?
- spring - 开发环境中springboot应用程序war文件的上下文根
- python - 如何在 PyCharm 中找到知道 Python 中的对象的类定义?