【发布时间】:2022-11-05 16:55:29
【问题描述】:
我正在尝试使用来自this link 的图像提取文章正文,以便使用提取的文章正文制作 HTML 表格。所以,我尝试使用BeautifulSoup。
t_link = 'https://www.cnbc.com/2022/01/03/5-ways-to-reset-your-retirement-savings-and-save-more-money-in-2022.html'
page = requests.get(t_link)
soup_page = BeautifulSoup(page.content, 'html.parser')
html_article = soup_page.find_all("div", {"class": re.compile('ArticleBody-articleBody.?')})
for article_body in html_article:
print(article_body)
但不幸的是,article_body 没有显示任何图像,就像这样。因为,<div class="InlineImage-wrapper"> 不是这样刮的
那么,如何获取带有文章图片的文章数据,以便制作 HTML 表格呢?
【问题讨论】:
-
似乎该站点使用延迟加载方法来加载图像,这意味着它是在渲染页面时加载的,我认为 bs4 无法处理,因为它不渲染页面(它只抓取源页面,而不是渲染页)
-
图片有
<div class="InlineImage-wrapper">,我是初学者,所以我遇到了问题 -
是的,正如我告诉你的那样,图像的 HTML 标记在那里,但是图像没有在服务器端加载,它在客户端呈现(它使用延迟加载),bs4 无法直接检索图像,因为它不会渲染图像。我尝试检查页面,仍然有一种使用 bs4 的方法,但是您需要使用来自例如的 ID。
id="ArticleBody-InlineImage-106967852"=106967852,并在window.__s_data上找到它的映射,找到映射后,从该对象中获取图像 -
我不知道以何种方式获取图像(延迟加载,请求看不到它,因为它是从不同的源动态加载的,但是存在于
ld+json脚本标签等中 - 请参阅@baduker 的回复)将有助于 HTML 表格...?您抓取数据以对其进行处理,对其进行分析,无论如何,而不是“抓取 HTML 以创建 HTML...表”。无意冒犯,但您的问题存在严重的逻辑缺陷。 -
@BarrythePlatipus 是的,实际上,我是初学者(不是开发人员或类似的人),我正在寻找是否有办法抓取文章内容(包含所有段落和图像)。我认为几乎所有东西都可以报废,在 python 中有很多库可以做这些类型的东西,这对我来说是未知的,任何人都可以解决我的问题。我从 baduker 的回复中得到了一个想法,特别感谢他。从他的回答来看,我正试图以另一种方式解决我的问题。另外,非常感谢 Barry 的友好回复。
标签: python web-scraping beautifulsoup