由于您想要的 div 是特定于站点的,因此您可能需要设置一个简单的检查。
这包括
- 下载 HTML -
urllib.urlopen(URL)
或requests.get(URL)
.
- 提取正确的部分(BeautifulSoup,自己动手)
- 执行比较(直接比较或 difflib)。
弄清楚什么以及如何提取数据将花费您最长的时间。我推荐在 Chrome/Firefox 中使用开发者工具。
假设我们想知道 digitalocean.com 上的计数器何时更新。计数器的 div 如下所示:
<div class='inner'>
<span class='count'>5</span>
<span class='count'>8</span>
<span class='count'>2</span>
<span class='count_delimiter'>,</span>
<span class='count'>4</span>
<span class='count'>1</span>
<span class='count'>7</span>
</div>
可悲的是,没有 id,使用 BeautifulSoup4 很容易取出。(例如soup.find(id="counter")
.
相反,我会选择拉出所有具有“计数”类的内部元素。
import requests
from bs4 import BeautifulSoup
resp = requests.get('https://www.digitalocean.com')
soup = BeautifulSoup(resp.text)
digits = [tag.getText() for tag in soup.find_all(class_="count")]
count = int(''.join(digits))
BeautifulSoup具有出色的文档,可用于解析 HTML 文档而无需费力(取决于您正在抓取的站点的布局如何)。