[英]python iterate multiple tags using beautiful soup
我正在使用 python 3,我想做的是分析 HTML 頁面並從特定標簽中提取一些信息。 此操作必須多次執行。 要獲取 HTML 頁面,我正在使用 beautifulsoup 模塊,我可以通過這種方式正確獲取 html 代碼:
import urllib.request as req
import bs4
url = 'http://myurl.com'
reqq = req.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
reddit_file = req.urlopen(reqq)
reddit_data = reddit_file.read().decode('utf-8')
soup = bs4.BeautifulSoup(reddit_data, 'lxml')
我的 html 結構如下:
<div class="first_div" id="12345">
<div class="second_div">
<div class="third_div">
<div class="fourth_div">
<div class="fifth_div">
<a id="dealImage" class="checked_div" href="http://www.myurl.com/">
我要提取的是href
值,所以http://www.myurl.com/
我嘗試像這樣使用 find() function 並且它有效:
div = soup.find("div", {"class" : "first_div"})
但是,如果我嘗試直接找到第二個 div:
div = soup.find("div", {"class" : "second_div"})
它返回空值
謝謝
編輯:
源 html 頁面如下:
我必須提取的是a-row dealContainer dealTile
div class 中的href
值
find
僅返回與給定條件匹配的此標記的第一個子項。
但是findAll
提取與給定條件匹配的 Tag 對象列表。 您可以指定標簽的名稱以及您希望標簽具有的任何屬性。
這里如果你想提取所有href
所以你需要使用for
循環:
href = soup.findAll("div", {"class" : "first_div"})
for item in href:
print(img.get('href'))
使用速度更快的 Css 選擇器。
from bs4 import BeautifulSoup
reddit_data='''<div class="first_div" id="12345">
<div class="second_div">
<div class="third_div">
<div class="fourth_div">
<div class="fifth_div">
<a id="dealImage" class="checked_div" href="http://www.myurl.com/">
</div>
</div>
</div>
</div>
</div>'''
soup = BeautifulSoup(reddit_data, 'lxml')
for item in soup.select(".first_div a[href]"):
print(item['href'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.