簡體   English   中英

使用美麗湯獲取href

[英]Getting href using Beautiful Soup

我正在嘗試為此HTML代碼提取一個特定的鏈接

<a class="pageNum taLnk" data-offset="10" data-page-number="1" 
href="www.blahblahblah.com/bb32123">Page 1 </a>
<a class="pageNum taLnk" data-offset="20" data-page-number="2" 
href="www.blahblahblah.com/bb45135">Page 2 </a>

如您所見,鏈接(href)雜亂無章,因此沒有可供我使用的模式,這意味着我需要使用BeautifulSoup手動提取href。

我想特別獲得Page 2的href。

這些可以是我現在擁有的代碼。

 from bs4 import BeautifulSoup
 import urllib

 url = 'https://www.tripadvisor.com/ShowUserReviews-g293917-d539542-r447460956-Duangtawan_Hotel_Chiang_Mai-Chiang_Mai.html#REVIEWS'
 page = urllib.request.urlopen(url)
 soup = BeautifulSoup(page, 'html.parser')
 for link in soup.find_all('a', attrs = {'class' : 'pageNum taLnk'}):
     print (link)

如您所見,我一直試圖獲取專門針對第2頁的href信息。是否仍然可以通過標記內的額外信息訪問data-page-number = "2"例如data-page-number = "2"data-offset = "20"

page_2 = soup.find('a', attrs = {'data-page-number' : '2'})

這只會為您提供第2頁,如果無論當前頁面是什么都想要獲得下一頁,則應該找到下一頁網址:

next_page = soup.find('a', attrs = {'class' = 'nav next rndBtn ui_button primary taLnk'})

某些屬性(例如HTML 5中的data- *屬性)具有不能用作關鍵字參數名稱的名稱:

 data_soup = BeautifulSoup('<div data-foo="value">foo!</div>') data_soup.find_all(data-foo="value") # SyntaxError: keyword can't be an expression 

您可以在搜索中使用這些屬性,方法是將它們放入字典中,並將字典作為attrs參數傳遞到find_all()中:

 data_soup.find_all(attrs={"data-foo": "value"}) # [<div data-foo="value">foo!</div>] 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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