beautifulsoup 查找特定标签
我开始学习使用beautifulsoup,但遇到了一个我解决不了的问题。
我有这个网站,想要提取物品的价值。这个价值可以在
<span class="gw2money-fragment">%value <i class="gw2money-silver">s</i></span>
标签之间找到,
<span class="gw2money-fragment">%value <i class="gw2money-copper">c</i></span>.
提取这些值并不难,问题在于要检查这个值是否在<i class="gw2money-silver">
或者<i class="gw2money-copper">
标签里面。
r = requests.get("http://www.gw2spidy.com/item/24467", proxies=proxyDict)
soup = BeautifulSoup(r.text)
checksoup = soup.find_all("span")
numliste = []
for links in checksoup:
#print(links)
price = links.contents[0]
print(price)
del numliste[0]
print(numliste)
这是我目前获取铜币和银币值的方法。
1 个回答
3
我会先找一下 gw2money-fragment
这个类,然后再测试一下它里面的 i
元素是什么样的:
for row in soup.find_all('tr'):
fragments = row.find_all('span', class_='gw2money-fragment')
if not fragments:
continue
label = row.th or row.td
print(label.text)
for fragment in fragments:
value = fragment.text.split()[0]
type_ = fragment.i['class'][0].rsplit('-', 1)[-1]
print('-', value, type_)
示例:
>>> for row in soup.find_all('tr'):
... fragments = row.find_all('span', class_='gw2money-fragment')
... if not fragments:
... continue
... label = row.th or row.td
... print(label.text)
... for fragment in fragments:
... value = fragment.text.split()[0]
... type_ = fragment.i['class'][0].rsplit('-', 1)[-1]
... print('-', value, type_)
...
Sell Price:
- 1 silver
- 50 copper
Buy Price:
- 1 silver
- 32 copper
Topaz Nugget
- 2 silver
- 98 copper
- 1 silver
- 77 copper
Sunstone Nugget
- 3 silver
- 17 copper
- 2 silver
- 15 copper
Carnelian Nugget
- 3 silver
- 48 copper
- 2 silver
- 15 copper
Peridot Nugget
- 3 silver
- 21 copper
- 2 silver
- 19 copper
Adorned Tiger's Eye Jewel
- 4 silver
- 26 copper
- 3 silver
- 85 copper
Tiger's Eye Copper Amulet of Precision
- 6 silver
- 26 copper
- 4 silver
- 51 copper
Tiger's Eye Copper Ring of Precision
- 6 silver
- 46 copper
- 4 silver
- 76 copper
Tiger's Eye Copper Stud of Precision
- 7 silver
- 2 copper
- 5 silver
- 43 copper