使用 python 和 lxml 爬取 imdb 数据库
crawling imdb database using python and lxml
hxs = lxml.html.document_fromstring(requests.get("http://www.imdb.com/title/" + id).content)
movie = {}
try:
movie['title'] = hxs.xpath('//*[@id="overview-top"]/h1/span[1/text()'[0].strip()
except IndexError:
movie['title']
我无法理解 "hxs.xpath('//*[@id="overview-top"]/h1/span[1]/text()')[0].strip()"
下面的函数 lxml.html.document_fromstring(string) 从给定的字符串中解析文档。这总是创建一个正确的 HTML 文档,这意味着 parent 节点是 ,并且有一个 body 并且可能是一个 head.
hxs = lxml.html.document_fromstring(requests.get("http://www.imdb.com/title/" + id).content)
您可以使用此代码查看 html。
print lxml.html.tostring(hxs)
考虑标题为tt1905041的IMDb电影,考虑网页的html源代码,
<td id="overview-top">
<h1 class="header"> <span class="itemprop" itemprop="name">Fast & Furious 6</span>
<span class="nobr">(<a href="/year/2013/?ref_=tt_ov_inf" >2013</a>)</span>
</h1>
</td>
因此,因为我们需要标题,所以我们从外部解析它 html,
[@id="overview-top"] 将选择所需的 id 元素
h1
span1 由于有多个 span 元素,我们选择第一个。
与我们解析 html 类似,我们得到以下代码,
movie['title'] = hxs.xpath('//*[@id="overview-top"]/h1/span[1]/text()')[0].strip()
print movie['title']
输出:愤怒 6
关于 XPath 的更多信息here
hxs = lxml.html.document_fromstring(requests.get("http://www.imdb.com/title/" + id).content)
movie = {}
try:
movie['title'] = hxs.xpath('//*[@id="overview-top"]/h1/span[1/text()'[0].strip()
except IndexError:
movie['title']
我无法理解 "hxs.xpath('//*[@id="overview-top"]/h1/span[1]/text()')[0].strip()"
下面的函数 lxml.html.document_fromstring(string) 从给定的字符串中解析文档。这总是创建一个正确的 HTML 文档,这意味着 parent 节点是 ,并且有一个 body 并且可能是一个 head.
hxs = lxml.html.document_fromstring(requests.get("http://www.imdb.com/title/" + id).content)
您可以使用此代码查看 html。
print lxml.html.tostring(hxs)
考虑标题为tt1905041的IMDb电影,考虑网页的html源代码,
<td id="overview-top">
<h1 class="header"> <span class="itemprop" itemprop="name">Fast & Furious 6</span>
<span class="nobr">(<a href="/year/2013/?ref_=tt_ov_inf" >2013</a>)</span>
</h1>
</td>
因此,因为我们需要标题,所以我们从外部解析它 html,
[@id="overview-top"] 将选择所需的 id 元素
h1
span1 由于有多个 span 元素,我们选择第一个。 与我们解析 html 类似,我们得到以下代码,
movie['title'] = hxs.xpath('//*[@id="overview-top"]/h1/span[1]/text()')[0].strip()
print movie['title']
输出:愤怒 6
关于 XPath 的更多信息here