【问题标题】:Python web scraping access value between <a> </a> [duplicate]<a> </a>之间的Python网页抓取访问值[重复]
【发布时间】:2021-02-18 12:28:37
【问题描述】:

我是网络抓取的新手,如果之前有人问过这个问题,我深表歉意。

假设我有这个 html 代码:&lt;a aria-current="page" aria-label="Current page" href="https://name_webpage.com/"&gt;1&lt;/a&gt;

如何使用 python 访问&lt;a&gt; &lt;/a&gt; 之间的值,即 1?

非常感谢!

【问题讨论】:

  • 您可能会使用 regex 而侥幸,但对于更复杂的用途,您将需要一个专用库,例如​​ beautifulsoup
  • 最好避免使用正则表达式来解析 HTML。使用 HTML 解析器,就像在链接的副本中一样。有几个相关的重复,也请搜索其他的,尽管那里给出的一些答案应该足够了。
  • 非常感谢您的回答! @costaparas 回答解决了我的问题!
  • 您应该包含有关您用于执行抓取的包的信息 - 一个简单的 Web 客户端,例如 aiohttp 或请求?诸如 Scrapy 之类的专用工具?还是 Selenium 之类的浏览器驱动程序?这个问题的潜在答案太多了。

标签: python web-scraping


【解决方案1】:

你指的是 python,所以我猜你想尝试 Beautiful Soup 来抓取 html。

在 BS4 中,可以通过寻址标签的数组 .contents[] 来访问标签的内容。 标签应该只有一个字段,因此您可以省略括号。使用 strip() 从链接中获取纯文本。

示例代码:

from bs4 import BeautifulSoup

doc = '<a aria-current="page" aria-label="Current page" href="https://name_webpage.com/">1</a>'

soup  = BeautifulSoup(doc, 'html.parser')

print(soup.a.contents[0].strip())

结果:

$ python scrapetest.py
1
$

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    相关资源
    最近更新 更多