簡體   English   中英

python 使用美湯迭代多個標簽

[英]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 頁面如下:

view-source: https://www.amazon.it/gp/goldbox/ref=gbps_ftr_s-5_2d1d_page_1?gb_f_deals1=dealTypes:LIGHTNING_DEAL%252CBEST_DEAL%252CDEAL_OF_THE_DAY,sortOrder:BY_SCORE&pf_rd_p=82dc915a-4dd2-4943-b59f-dbdbc6482d1d&pf_rd_s=slot- 5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=5Q5APCV900GSWS51A6QJ&ie=UTF8

我必須提取的是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM