iT邦幫忙

0

python soup 抓出的資料,可以抓屬性的值嗎?

  • 分享至 

  • xImage

您好:
如下
我先用

   url_regexp = re.compile("^prod-itemlist-")
   tag_item = soup.find_all(class_="table-td",  id=url_regexp)

抓出值相關資料
再用

     for item in tag_item:
            book = []
             book.append(item.find("img")["alt"])

要去取資料,篩資料

請問,要如何去抓
這一段內id的值?
因為要取出0010963477
有是過先抓
isbn=item.find(class_="table-td")
print(isbn)
但結果是None

謝謝

整個抓出的區段如下

<div class="table-td" id="prod-itemlist-0010963477">
    <div class="box">
        <a href="//search.books.com.tw/redirect/move/key/%E6%BC%94%E7%AE%97%E6%B3%95/area/mid/item/0010963477/page/1/idx/6/cat/001/pdf/1/spell/3"
            target="_blank" title="演算法圖鑑【全新增訂版】:33種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解"><img
                alt="演算法圖鑑【全新增訂版】:33種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解" class="b-lazy"
                data-src="https://im1.book.com.tw/image/getImage?i=https://www.books.com.tw/img/001/096/34/0010963477.jpg&amp;w=187&amp;h=187&amp;v=64db0062"
                data-srcset="https://im1.book.com.tw/image/getImage?i=https://www.books.com.tw/img/001/096/34/0010963477.jpg&amp;w=374&amp;h=374&amp;v=64db0062 2x"
                src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" /></a>
    </div>
    <h4><a href="//search.books.com.tw/redirect/move/key/%E6%BC%94%E7%AE%97%E6%B3%95/area/mid/item/0010963477/page/1/idx/6/cat/001/pdf/1/spell/3"
            target="_blank"
            title="演算法圖鑑【全新增訂版】:33種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解"><em>演算法</em>圖鑑【全新增訂版】:33種<em>演算法</em> +
            7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用全圖解</a></h4>
    <div class="type clearfix">
        <p>中文書</p>
        <p class="author">
            <a href="//search.books.com.tw/search/query/cat/all/v/1/adv_author/1/key/%E5%AE%AE%E5%B4%8E%E4%BF%AE%E4%B8%80"
                rel="go_author" title="宮崎修一">宮崎修一</a> <a
                href="//search.books.com.tw/search/query/cat/all/v/1/adv_author/1/key/%E7%9F%B3%E7%94%B0%E4%BF%9D%E8%BC%9D"
                rel="go_author" title="石田保輝">石田保輝</a> <a
                href="//search.books.com.tw/search/query/cat/all/v/1/adv_author/1/key/%E9%99%B3%E5%BD%A9%E8%8F%AF"
                rel="go_author" title="陳彩華">陳彩華</a>
        </p>
    </div>
    <ul class="price clearfix">
        <li>優惠價: <b>9</b> 折, <b>495</b> 元</li>
    </ul>
    <div class="paster-0">
    </div>
</div>
看更多先前的討論...收起先前的討論...
ccutmis iT邦高手 2 級 ‧ 2024-11-21 08:31:05 檢舉
如果只是要 prod-itemlist-0010963477 裡面的 0010963477 值,也可以用 regEXP,
例如:
htm="""
<div class="table-td" id="prod-itemlist-0010963477">
<div class="box">...略...
"""
import re
id_ls=re.findall('id="prod-itemlist-([^"]+)"',htm)
print(id_ls)
# 印出結果為串列: ['0010963477']
noway iT邦研究生 1 級 ‧ 2024-11-21 20:10:35 檢舉
您好:
目前是已抓出
<div ..id="prod-itemlist-0010963477"> ...</div>,
<div ..id="prod-itemlist-0010963478"> ...</div>,
<div ..id="prod-itemlist-0010963479"> ...</div>,
然後依序跑回圈取裡面的值,
但不知道要如何抓出 現有
<div ..id="prod-itemlist-0010963477"> ...</div> 中,id="prod-itemlist-0010963477" 這一個區段<div >屬性內的值
謝謝
noway iT邦研究生 1 級 ‧ 2024-11-21 20:25:39 檢舉
id_ls=re.findall('id="prod-itemlist-([^"]+)"',htm)
他出現 undefine htm
ccutmis iT邦高手 2 級 ‧ 2024-11-22 01:52:10 檢舉
呃... 那個範例只是簡單示範如何用re在一段html源碼(變數名為htm)裡面直接把所有符合 id="prod-itemlist-xxxxxxxxxx" 格式的 xxxxxxxxxx 取出,返回值是一組串列(所以我把它命名為 re_ls)
只是提供你一個解題方向,你要看的懂它是在做什麼...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
hokou
iT邦好手 1 級 ‧ 2024-11-21 08:17:01
最佳解答

這樣試試看?

前略

for item in tag_item:
    id = item.get("id").split("-")[-1]
    print(id)
noway iT邦研究生 1 級 ‧ 2024-11-21 20:27:50 檢舉

您好:這樣可以
所以是用get 來抓 有ID這一個屬性的內容值?
謝謝

hokou iT邦好手 1 級 ‧ 2024-11-22 09:32:57 檢舉

對,抓到 id ,item["id"] 也可以試試
之後會得到 prod-itemlist-0010963477
再用字串分割 split(),以 "-" 分割
會得到 ["prod", "itemlist", "0010963477"] 的列表
取最後 1 個,以 [-1] 得到 "0010963477"

froce iT邦大師 1 級 ‧ 2024-11-22 15:45:52 檢舉
tiankong8688
iT邦新手 5 級 ‧ 2024-12-04 15:10:06
【**此則訊息已被站方移除**】

我要發表回答

立即登入回答