【问题标题】:Getting href using Beautiful Soup使用 Beautiful Soup 获取 href
【发布时间】:2017-01-01 15:38:00
【问题描述】:

我正在尝试为此 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。

我想专门获取第 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"

【问题讨论】:

    标签: python beautifulsoup urllib


    【解决方案1】:
    page_2 = soup.find('a', attrs = {'data-page-number' : '2'})
    

    这只会给你第2页,如果你想得到下一页不管当前页面是什么,你应该找到下一页的url:

    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() 论据:

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

    【讨论】:

    • @Niche.P 我更新了代码,请采纳。
    • 是的,我在等计时器,还剩 2 分钟。谢谢
    猜你喜欢
    • 2011-11-03
    • 2019-05-30
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2021-07-27
    • 2022-10-15
    相关资源
    最近更新 更多