Python正则表达与IMDB前250名列表

ben*_*min 3 python regex

我刚刚开始使用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>,因此.*之间,但显然这不是去这里,因为它只是整个列表,而不是每个单独条目匹配的正确途径.我对在线阅读的正则表达式教程感到困惑....帮助?

Ran*_*Rag 5

因此,尝试HTML使用正则表达式进行解析是一种不好的做法,可以处理这些内容html parsers.python中有很多选项可供选择Beautiful Soup,lxml等等.

我将展示如何使用lxmlXPath 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