之前是用正则写的,虽然成功爬取了,但是要考虑的特殊情况太多,很烦。后来有人建议用xpath,所以学习了相关知识,改写原先用正则写的代码,但是碰到了一个问题
网页的源代码如下:
<div class="hd">
<a href="https://movie.douban.com/subject/1292052/" class="">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞(港) / 刺激1995(台)</span>
</a>
<span class="playable">[可播放]</span>
</div>
<div class="bd">
<p class="">
导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...<br>
1994 / 美国 / 犯罪 剧情
</p>
<div class="star">
<span class="rating5-t"></span>
<span class="rating_num" property="v:average">9.6</span>
<span property="v:best" content="10.0"></span>
<span>987073人评价</span>
</div>
<p class="quote">
<span class="inq">希望让人自由。</span>
</p>
</div>
我现在想提取导演演员那块的信息,根据所在位置我的代码如下(导演存在dirc中)):
selc = etree.HTML(html)
infos = selc.xpath('//div[@class="info"]')
for a in infos:
dirc = a.xpath('div[@class="bd]/p[@class=""]/text()')
但这样写不对,网上的代码如下:
info = i.xpath('div[@class="bd"]/p[1]/text()')
我这样写和网上的不是一样吗?为什么我的不对?求高手指点,谢谢
试试在chrome里装个XPath Helper插件,在这里面边写可以边看到匹配出来的内容,这样就知道自己写到哪个位置出问题了。