【问题标题】:Not able to scrape links in python with beautifulsoup无法用beautifulsoup抓取python中的链接
【发布时间】:2018-09-14 15:21:39
【问题描述】:

我想抓取标签和 class="author track" 的网页上的所有链接。一个网页上有多个这样的 URL,但是当我运行程序时,我的列表是空的

一个 HTML 示例:-

<a class="author track" href="/nileshkikuuchise" data-gaq="author" data-dmc="entry-artist">
                                                                        <img class="avatar" src="https://ctl.s6img.com/cdn/s6-original-art-uploads/society6/uploads/u/nileshkikuuchise/avatar_asset/5323d6c4d92143e8b37f0fa644d7044f_p3.jpg" width="20" height="20" data-dmc="entry-photo">
                                                                    Nileshkikuuchise                                </a>

我的代码:-

discover_page = BeautifulSoup(r.text, 'html.parser')
finding_accounts = discover_page.find_all("a", "[class~=author track]")
print(finding_accounts)

输出没有

如何将 href 值添加到列表中?我可以稍后执行 for 循环,但需要先正确掌握基础知识

【问题讨论】:

  • 你试过discover_page.find_all("a", class_="author track")吗? ~ 在那里看起来有点奇怪。 discover_page.select('a[class="author track"]') 也应该可以工作。
  • 我认为错误只是class应该是class_
  • 以上方法我都试过了,还是不行?也许问题是它可以找到元素但无法在控制台中打印它。

标签: python python-3.x web-scraping beautifulsoup


【解决方案1】:

您似乎混合了selectfind_all 所期望的风格。

这两种方法对我有用:

>>> r = '''
<a class="author track" href="/nileshkikuuchise" data-gaq="author" data-dmc="entry-artist">
                                                                        <img class="avatar" src="https://ctl.s6img.com/cdn/s6-original-art-uploads/society6/uploads/u/nileshkikuuchise/avatar_asset/5323d6c4d92143e8b37f0fa644d7044f_p3.jpg" width="20" height="20" data-dmc="entry-photo">
                                                                    Nileshkikuuchise                                </a>
'''

>>> discover_page = BeautifulSoup(r, 'html.parser')
>>> discover_page.find_all("a", class_="author track")
[<a class="author track" data-dmc="entry-artist" data-gaq="author" href="/nileshkikuuchise">
 <img class="avatar" data-dmc="entry-photo" height="20" src="https://ctl.s6img.com/cdn/s6-original-art-uploads/society6/uploads/u/nileshkikuuchise/avatar_asset/5323d6c4d92143e8b37f0fa644d7044f_p3.jpg" width="20"/>
                                                                     Nileshkikuuchise                                </a>]
>>> discover_page.select('a[class="author track"]')
[<a class="author track" data-dmc="entry-artist" data-gaq="author" href="/nileshkikuuchise">
 <img class="avatar" data-dmc="entry-photo" height="20" src="https://ctl.s6img.com/cdn/s6-original-art-uploads/society6/uploads/u/nileshkikuuchise/avatar_asset/5323d6c4d92143e8b37f0fa644d7044f_p3.jpg" width="20"/>
                                                                     Nileshkikuuchise                                </a>]

【讨论】:

  • 它也对我有用,也许问题出在日志记录上。如何从 html 打印 href 值到控制台?
  • @SultanMorbiwala:请注意,我的两个版本都与您的不同。运行您的代码确实会产生一个空列表。您可以通过遍历列表来获取链接:print([a["href"] for a in discover_page.select('a[class="author track"]')])
猜你喜欢
  • 2018-07-29
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 2016-03-21
相关资源
最近更新 更多