我想用漂亮的汤只解析CSS选择器的文本。
css选择器是:td a
。如果td
的输出没有与之关联的a
,请不要解析它。
我有大概如下的代码:
req = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')
soup.find("id", {"id": "monatevent"})
html如下:
<td id="monat">5</td>
<td id="monat">6</td>
<td id="monatevent"><a href="file?mdu=82383783">7</a></td>
我只想从其内部monatevent
元素中提取7
,特别是a
。
我该怎么做?
谢谢。
答案 0 :(得分:1)
如果要确保它包含在<a>......</a>
标记中,则:
soup.find('td', {'id': 'monatevent'}).find('a').text
返回:
7
请记住,如果soup.find('td', {'id': 'montaevent'})
返回None
,这将返回错误,在这种情况下,您可以使用try-except
块来处理此错误。
如果要查找所有符合条件的对象并创建一个列表,请执行以下操作:
output = [i.find('a').text for i in soup.find_all('td', {'id': 'monatevent'})]
同样,这假定所有标签都包含一个内部<a>
标签。如果没有,请执行以下操作:
output = []
tags = soup.find_all('td', {'id': 'monatevent'})
for i in tags:
try:
output.append(i.find('a').text)
except:
continue
答案 1 :(得分:0)
您必须根据标签名称find
soup.find("td", {"id": "monatevent"})
# <td id="monatevent"><a href="file?mdu=82383783">7</a></td>
soup.find("td", {"id": "monatevent"}).text
# '7'