[英]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.