亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

BeautifulSoap為具有特定類的div中的所有img獲取多個元素

BeautifulSoap為具有特定類的div中的所有img獲取多個元素

慕斯709654 2021-12-21 16:27:26
我試圖在with下的標簽中獲取image-file屬性(相對鏈接)中的鏈接(我不想要鏈接)。imgdivid previewImagessrc這是示例 HTML:<div id="previewImages">  <div class="thumb"> <a><img src="https://example.com/s/15.jpg" image-file="/image/15.jpg" /></a> </div>  <div class="thumb"> <a><img src="https://example.com/s/2.jpg" image-file="/image/2.jpg" /> </a> </div>  <div class="thumb"> <a><img src="https://example.com/s/0.jpg" image-file="/image/0.jpg" /> </a> </div>  <div class="thumb"> <a><img src="https://example.com/s/3.jpg" image-file="/image/3.jpg" /> </a> </div>  <div class="thumb"> <a><img src="https://example.com/s/4.jpg" image-file="/image/4.jpg" /> </a> </div></div>我嘗試了以下操作,但它只給了我第一個鏈接,而不是全部:import sysimport urllib2from bs4 import BeautifulSoupquote_page = sys.argv[1] # this should be the first argument on the command linepage = urllib2.urlopen(quote_page)soup = BeautifulSoup(page, 'html.parser')images_box = soup.find('div', attrs={'id': 'previewImages'})if images_box.find('img'):    imagesurl = images_box.find('img').get('image-file')print imagesurl如何獲取image-fileattritube 中所有img標簽的鏈接divwith class previewImages?
查看完整描述

3 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

利用 .findAll


前任:


from bs4 import BeautifulSoup


html = """<div id="previewImages">

  <div class="thumb"> <a><img src="https://example.com/s/15.jpg" image-file="/image/15.jpg" /></a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/2.jpg" image-file="/image/2.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/0.jpg" image-file="/image/0.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/3.jpg" image-file="/image/3.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/4.jpg" image-file="/image/4.jpg" /> </a> </div>

</div>"""


soup = BeautifulSoup(html, "html.parser")

images_box = soup.find('div', attrs={'id': 'previewImages'})

for link in images_box.findAll("img"):

    print link.get('image-file')

輸出:


/image/15.jpg

/image/2.jpg

/image/0.jpg

/image/3.jpg

/image/4.jpg


查看完整回答
反對 回復 2021-12-21
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

我認為將 id 與傳遞給的屬性選擇器一起使用會更快 select


from bs4 import BeautifulSoup as bs

html = '''

<div id="previewImages">

  <div class="thumb"> <a><img src="https://example.com/s/15.jpg" image-file="/image/15.jpg" /></a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/2.jpg" image-file="/image/2.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/0.jpg" image-file="/image/0.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/3.jpg" image-file="/image/3.jpg" /> </a> </div>

  <div class="thumb"> <a><img src="https://example.com/s/4.jpg" image-file="/image/4.jpg" /> </a> </div>

</div>

'''

soup = bs(html, 'lxml')

links = [item['image-file'] for item in soup.select('#previewImages [image-file]')]

print(links)


查看完整回答
反對 回復 2021-12-21
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

如果我們對 lxml 執行相同的場景,則加起來,


import lxml.html

tree = lxml.html.fromstring(sample)

images = tree.xpath("//img/@image-file")

print(images)

輸出 ['/image/15.jpg', '/image/2.jpg', '/image/0.jpg', '/image/3.jpg', '/image/4.jpg']


查看完整回答
反對 回復 2021-12-21
  • 3 回答
  • 0 關注
  • 333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號