Python HTML 抓取

Posted

技术标签:

【中文标题】Python HTML 抓取【英文标题】:Python HTML scraping 【发布时间】:2010-12-20 02:28:09 【问题描述】:

这并不是真正的抓取,我只是想在类具有特定值的网页中找到 URL。例如:

<a class="myClass" href="/url/7df028f508c4685ddf65987a0bd6f22e">

我想获取 href 值。关于如何做到这一点的任何想法?也许正则表达式?你能发布一些示例代码吗? 我猜 html 抓取库,比如 BeautifulSoup,只是为了这个有点矫枉过正......

非常感谢!

【问题讨论】:

【参考方案1】:

正则表达式通常是个坏主意,请尝试使用BeautifulSoup

快速示例:

html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs='class': 'myclass')
for link in links:
    #process link

【讨论】:

不错的一个。 BeautifulSoup FTW。太糟糕了,它在 3.0 中变得更糟【参考方案2】:

啊,不是regex for parsing HTML!

幸运的是,在 Python 中,我们有 BeautifulSoup 或 lxml 为我们完成这项工作。

【讨论】:

【参考方案3】:

正则表达式将是一个糟糕的选择。 HTML 不是常规语言。 Beautiful Soup呢?

【讨论】:

【参考方案4】:

不应该使用正则表达式来解析 HTML。请参阅the first answer to this question 以获得解释:)

BeautifulSoup +1。

【讨论】:

【参考方案5】:

如果您的任务就是这么简单,只需使用字符串操作(甚至不用正则表达式)

f=open("htmlfile")
for line in f:
    if "<a class" in line and "myClass" in line and "href" in line:
        s = line [ line.index("href") + len('href="') : ]
        print s[:s.index('">')]
f.close()

对于这种情况,HTML 解析器不是必须的。

【讨论】:

【参考方案6】:

问题是我知道 HTML 页面的结构,我只想找到那种特定类型的链接(其中 class="myclass")。还是美汤?

【讨论】:

【参考方案7】:

阅读解析 Html The Cthulhu Way https://blog.codinghorror.com/parsing-html-the-cthulhu-way/

【讨论】:

以上是关于Python HTML 抓取的主要内容,如果未能解决你的问题,请参考以下文章

python抓取数据,python使用socks代理抓取数据

python怎么自动抓取网页上每日天气预报

用python抓取javascript生成的html

python3 抓取图片

python 抓取图片

python抓取