使用beautifulsoup抓取merriam-webster

时间:2019-11-21 20:12:02

标签: python html web-scraping beautifulsoup lxml

我正在使用beautifulSoup并尝试仅从merriam-webster中抓取单词的第一个定义(非常冷),但同时也抓取了第二行(一个句子)。这是我的代码。 附注:我只想要“非常冷”的部分。输出中不应包含“穿上夹克...。”。请有人帮忙。

git_branch

2 个答案:

答案 0 :(得分:0)

Merriam-Webster构建页面的方式有点奇怪,但是您可以找到定义之前的<strong>标签,抓住下一个同级并像这样去除所有空白:

>>> tag.find('strong').next_sibling.strip()
u'very cold'

答案 1 :(得分:0)

通过类选择是CSS选择器匹配的第二种更快的方法。使用select_one仅返回第一个匹配项,使用next_sibling将您带到所需的节点

import requests
from bs4 import BeautifulSoup as bs

r = requests.get('https://www.merriam-webster.com/dictionary/freezing')
soup = bs(r.content, 'lxml')
print(soup.select_one('.mw_t_bc').next_sibling.strip())