确定网页中的 HTML 元素以进行网页抓取

Posted

技术标签:

【中文标题】确定网页中的 HTML 元素以进行网页抓取【英文标题】:Determining HTML Element in a web page for web scraping 【发布时间】:2018-04-06 01:56:21 【问题描述】:

这是 html 代码:

 <span class="milestone">Announcement:</span>
 "&nbsp; 2 April 2000 "
 <br>
 <span class="milestone">Ground Breaking:</span>
 "&nbsp; 23 February 2002
 <br>
 etc.

在网页上,我可以看到:

公告: 2000 年 4 月 2 日

破土动工: 2002 年 2 月 23 日

但我不知道如何使用 Python 的 BeautifulSoup 获取日期。使用 Chrome 的“检查元素”时,我可以看到日期信息,但我不知道获取它所需的 HTML 元素。 &amp;nbsp; 是否有细微差别使抓取更加困难?我不确定接下来要探索哪些选项。

【问题讨论】:

【参考方案1】:

使用BeautifulSoup,这相对简单——想法是通过类和文本定位“里程碑”元素,然后使用.next_sibling 找到下一个兄弟元素:

from bs4 import BeautifulSoup


data = """
<div>
 <span class="milestone">Announcement:</span>
 "&nbsp; 2 April 2000 "
 <br>
 <span class="milestone">Ground Breaking:</span>
 "&nbsp; 23 February 2002 "
 <br>
</div>"""

soup = BeautifulSoup(data, "html.parser")

print(soup.find(class_="milestone", text="Announcement:").next_sibling.strip())
print(soup.find(class_="milestone", text="Ground Breaking:").next_sibling.strip())

打印:

"  2 April 2000 "
"  23 February 2002 "

【讨论】:

这正是我所需要的。 .next_sibling 是 BeautifulSoup 库的一部分吗? @mschmidt 是的,这是一个内置方法,很高兴它有所帮助。

以上是关于确定网页中的 HTML 元素以进行网页抓取的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP的cURL库进行网页抓取

抓取网页时html元素找不到

请教网页里的特定数据怎么抓取?

jsoup抓取页面源码的问题、源码被隐藏、

python网络爬虫抓取动态网页并将数据存入数据库MySQL

使用 Node.js 进行网页抓取