3

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

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

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

非常感谢!

4

7 回答 7

16

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

快速示例:

html = #get html
soup = BeautifulSoup(html)
links = soup.findAll('a', attrs={'class': 'myclass'})
for link in links:
    #process link
于 2009-11-24T23:28:17.357 回答
9

啊,不是用于解析 HTML 的正则表达式

幸运的是,在 Python 中,我们有BeautifulSouplxml来为我们完成这项工作。

于 2009-11-24T23:27:31.087 回答
2

正则表达式将是一个糟糕的选择。HTML 不是常规语言。美丽的汤怎么样?

于 2009-11-24T23:28:20.897 回答
1

不应该使用正则表达式来解析 HTML。请参阅此问题的第一个答案以获得解释:)

为 BeautifulSoup +1。

于 2009-11-24T23:35:00.947 回答
1

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

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 解析器不是必须的。

于 2009-11-25T00:32:35.337 回答
0

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

于 2009-11-24T23:30:07.820 回答
0

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

于 2009-11-24T23:39:08.520 回答