我正在尝试对漂亮汤解析的项目列表进行排序。每个项目都有唯一的链接和文本,但是除了列表中的第一个项目外,我不知道如何选择单个项目。
#Finds all div's with class image_list
containers = page_soup.findAll("div", {"class": "image_list"})
#selects the ul with the links I want to sort through
RHAZ = containers[1]
以下是我运气不佳的一些尝试:
#200 is one of the unique numbers a li has.
RHAZ.li.findAll("a", {"href":"200"})
RHAZ.li.findAll("a", {"text":"200"})
这是页面HTML的外观
<div class="image_list">
<ul>
<li><a href="./?s=2127&camera=RHAZ%5F">Sol 2127 (4 img)</a></li>
<li><a href="./?s=2126&camera=RHAZ%5F">Sol 2126 (4 img)</a></li>
....
从2127-1开始。
答案 0 :(得分:1)
找到部门,然后在部门中找到列表项。对于每个项目,获取其“ a”标签和标签的属性。
import bs4
soup = bs4.BeautifulSoup('''<div class="image_list">
<ul>
<li><a href="./?s=2127&camera=RHAZ%5F">Sol 2127 (4 img)</a></li>
<li><a href="./?s=2126&camera=RHAZ%5F">Sol 2126 (4 img)</a></li>''')
for li in soup.find("div", {"class": "image_list"}).findAll('li'):
print(li.a.text, li.a['href'])
#Sol 2127 (4 img) ./?s=2127&camera=RHAZ%5F
#Sol 2126 (4 img) ./?s=2126&camera=RHAZ%5F
答案 1 :(得分:0)
您的href文本或href都不等于200,请尝试使用
import re
RHAZ.li.find_all("a", href=re.compile("RHAZ"))
RHAZ.li.find_all("a", href=lambda href: href and "RHAZ" in href)
答案 2 :(得分:0)
您可以使用CSS选择器'div.image_list a',它将在<a>
类<div>
标签中找到所有image_list
标签:
data = """
<div class="image_list">
<ul>
<li><a href="./?s=2127&camera=RHAZ%5F">Sol 2127 (4 img)</a></li>
<li><a href="./?s=2126&camera=RHAZ%5F">Sol 2126 (4 img)</a></li>"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(data, 'lxml')
for a in soup.select('div.image_list a'):
print(a.text, a['href'])
打印:
Sol 2127 (4 img) ./?s=2127&camera=RHAZ%5F
Sol 2126 (4 img) ./?s=2126&camera=RHAZ%5F