我刚刚开始使用Python,我试图将IMDB上的前250部电影与这个故障代码相匹配:
import urllib2
import re
def main():
response = urllib2.urlopen('http://www.imdb.com/chart/top')
html = response.read()
entries = re.findall("/title/.*</font>", html) #Wrong regex
print entries
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
我的理由是,我想匹配之间的一切/title/和</font>,因此.*之间,但显然这不是去这里,因为它只是整个列表,而不是每个单独条目匹配的正确途径.我对在线阅读的正则表达式教程感到困惑....帮助?
因此,尝试HTML使用正则表达式进行解析是一种不好的做法,可以处理这些内容html parsers.python中有很多选项可供选择Beautiful Soup,lxml等等.
我将展示如何使用lxml与XPath expressions获取所有的顶级250标题
import lxml
from lxml import etree
import urllib2
response = urllib2.urlopen('http://www.imdb.com/chart/top')
html = response.read()
imdb = etree.HTML(html)
titles = imdb.xpath('//div[@id="main"]/table//tr//a/text()')
Run Code Online (Sandbox Code Playgroud)
如果你这样做print titles[0]会给出'The Shawshank Redemption'输出.对于,XPath使用firefox的firebug扩展或安装firepath
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |