我正在尝试为此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-offset = "20"
等标记中的额外信息进行访问。
答案 0 :(得分:2)
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
您可以通过将这些属性放入搜索中来使用这些属性 字典并将字典传递给find_all()作为attrs 参数:
data_soup.find_all(attrs={"data-foo": "value"}) # [<div data-foo="value">foo!</div>]