使用python获取网页正文中的内容

时间:2014-03-05 05:54:06

标签: python web-scraping

我正在尝试使用python扫描各种网站。以下代码对我来说很好。

import urllib
import re
htmlfile =urllib.urlopen("http://google.com")
htmltext=htmlfile.read()
regex='<title>(.+?)</title>'
pattern=re.compile(regex)
title= re.findall(pattern,htmltext)
print title

为了获取正文内容,我将其更改如下:

import urllib
import re
htmlfile =urllib.urlopen("http://google.com")
htmltext=htmlfile.read()
regex='<body>(.+?)</body>'
pattern=re.compile(regex)
title= re.findall(pattern,htmltext)
print title

上面的代码给了我一个空的方括号。我不知道我做错了什么。请帮忙

2 个答案:

答案 0 :(得分:5)

一般来说,尝试parse HTML with regular expressions是一个坏主意。

出色的beautiful soup library使你想做的事情变得微不足道。

import bs4

html = '''
<head>
</head>
<body>
  <div></div>
</body>
'''

print(bs4.BeautifulSoup(html).find('body'))

Python也有一个HTML parser in its standard library,它基本上是一个功能较少的美味汤解析器版本。

如果你仍然坚持使用正则表达式,这应该可行。

import re
print(re.findall('<body>(.*?)</body>', html, re.DOTALL))

这也可能听起来很愚蠢,但请确保htmltext字符串中确实存在正文标记。

答案 1 :(得分:1)

要回答这个问题,实际上如果你通过HTMLtext,你将找不到两个身体标签。但我绝对建议你采取美丽的汤路线@rectangletangle提及