【发布时间】:2021-01-05 03:12:04
【问题描述】:
免责声明 我对 Python 还是很陌生。
我在 bs4 模块中使用 BeautifulSoup 进行网络抓取,我正在查看检查元素,我想打印第二个 <ul> 标记的文本。总共有 4 个<ul>tags,它们都有相同的类名。我将如何打印我想要的标签?还是两三个?
这是我的代码:
from bs4 import BeautifulSoup
from sys import argv
import requests
word_initial = argv[1]
url = requests.get(f'https://www.merriamwebster.com/thesaurus/{word_initial}').text
soup = BeautifulSoup(url, features='html.parser')
word = soup.find('h1', class_='hword')
syn = soup.find("ul", class_='mw-list')
print(word.text.upper())
print(syn.text)
【问题讨论】:
-
您可以简单地进行索引,例如'//ul[2]' 将为您提供所有 uls 的第二个标签'
-
所以代码行看起来像这样? word = soup.find("ul[2]", class_='mw-list')
-
我的错。我以为是xpath;因为 soup.find 返回一个值列表,所以你可以做 word[1] 返回第二个值。
-
对我来说,soup.find 不返回列表,它只是给我文本
-
你为什么不试试像
soup.find_all('ul',class_="mw-list'")这样的选择器。它将返回list并且list[1]将返回第二个元素
标签: python web-scraping