从网页提取元关键词?
我想用Python从一个网页中提取meta关键词。我在想是不是可以用urllib或者urllib2来实现,但我不太确定。有没有人有什么想法?
我在Windows XP上使用Python 2.6
3 个回答
0
为什么不使用正则表达式
keywordregex = re.compile('<meta\sname=
["\']keywords["\']\scontent=["\'](.*?)["\']\s/>')
keywordlist = keywordregex.findall(html)
if len(keywordlist) > 0:
keywordlist = keywordlist[0]
keywordlist = keywordlist.split(", ")
7
BeautifulSoup 是一个很棒的工具,可以用来用 Python 解析 HTML。
特别是,可以看看它的 findAll 方法:
http://www.crummy.com/software/BeautifulSoup/documentation.html
11
lxml 这个库比 BeautifulSoup 快(我觉得是这样),而且功能更强大,同时使用起来也相对简单。举个例子:
52> from urllib import urlopen
53> from lxml import etree
54> f = urlopen( "http://www.google.com" ).read()
55> tree = etree.HTML( f )
61> m = tree.xpath( "//meta" )
62> for i in m:
..> print etree.tostring( i )
..>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-2"/>
补充:另一个例子。
75> f = urlopen( "http://www.w3schools.com/XPath/xpath_syntax.asp" ).read()
76> tree = etree.HTML( f )
85> tree.xpath( "//meta[@name='Keywords']" )[0].get("content")
85> "xml,tutorial,html,dhtml,css,xsl,xhtml,javascript,asp,ado,vbscript,dom,sql,colors,soap,php,authoring,programming,training,learning,b
eginner's guide,primer,lessons,school,howto,reference,examples,samples,source code,tags,demos,tips,links,FAQ,tag list,forms,frames,color table,w3c,cascading
style sheets,active server pages,dynamic html,internet,database,development,Web building,Webmaster,html guide"
顺便说一下:XPath 是个值得了解的东西。
再补充:
另外,你也可以直接用正则表达式(regexp):
87> f = urlopen( "http://www.w3schools.com/XPath/xpath_syntax.asp" ).read()
88> import re
101> re.search( "<meta name=\"Keywords\".*?content=\"([^\"]*)\"", f ).group( 1 )
101>"xml,tutorial,html,dhtml,css,xsl,xhtml,javascript,asp,ado,vbscript,dom,sql, ...etc...
...不过我觉得这样写不太容易读,而且更容易出错(但只用到标准模块,而且还可以写成一行)。