要爬取内容的是豆瓣网的电影排行top250:
https://movie.douban.com/top250, 将电影名和评分爬取下来并输出, 如下图:
肖申克的救赎 导演:弗兰克·德拉邦特FrankDarabont 主演:蒂姆·罗宾斯TimRobbins/... 9.6 1994 美国 犯罪剧情 884501人评价
霸王别姬 导演:陈凯歌KaigeChen 主演:张国荣LeslieCheung/张丰毅FengyiZha... 9.6 1993 中国大陆香港 剧情爱情同性 884501人评价
这个杀手不太冷 导演:吕克·贝松LucBesson 主演:让·雷诺JeanReno/娜塔莉·波特曼... 9.6 1994 法国 剧情动作犯罪 884501人评价
阿甘正传 导演:RobertZemeckis 主演:TomHanks/RobinWrightPenn/GarySinise 9.6 1994 美国 剧情爱情 884501人评价
美丽人生 导演:罗伯托·贝尼尼RobertoBenigni 主演:罗伯托·贝尼尼RobertoBeni... 9.6 1997 意大利 剧情喜剧爱情战争 884501人评价
......
首先分析要爬取的url, 发现每个页面有25条内容, 总共有十页, 第一页的URL为
https://movie.douban.com/top250?start=0&filter=
第二页的url为
https://movie.douban.com/top250?start=25&filter=
第三页第四页也是类似的URL, 只是修改了start后面的数字, 第一页是0, 往后每增加25, 所以url的格式为’
https://movie.douban.com/top250?start={}&filter=’format(i*25)
然后分析如何爬取内容:
首先爬取标题:
查看源代码后, 发现标题是放在这样的代码中:
<div class="info">
<div class="hd">
<a href="https://movie.douban.com/subject/1292052/" class="">
<span class="title">肖申克的救赎span>
<span class="title"> / The Shawshank Redemptionspan>
<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.6span>
<span property="v:best" content="10.0">span>
<span>884501人评价span>
div>
可以很清楚的看到电影的标题存放的位置大概是
<span class="title">电影名称span>
在这里我们需要对lxml模块中的某些方法做些说明
我们这里用lxml库和XPath语法来帮助我们完成信息的提取。
XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历,我们用来提取格式为HTML的网页源码效率也相当高,可以遍历html的各个标签和属性,来定位到我们需要的信息的位置,并提取。
这里我们可以用一个for 循环把我们需要的信息提取出来。
首先定位到包含电影名称,导演等的模块,在这之前,我们用html库中的fromstring方法把网页中的节点和地址信息获取。
sel = html.fromstring(r)
然后进入使用xpath把模块提取出来
豆瓣中电影信息处于模块中
for i in sel.xpath('//div[@class="info"]'):
在根据模块中名称,导演等放置的内模块具体提取
比如电影名称
title = i.xpath('div[@class="hd"]/a/span[@class="title"]/text()')[0]
由于电影名称是该模块中的第一个文本,后面的文本内容是我们不需要的,所以只要索引为[0]的内容
后面依次把所有的内容提取出来,然后打印就可以啦。
效果是这样的
肖申克的救赎 导演:弗兰克·德拉邦特FrankDarabont 主演:蒂姆·罗宾斯TimRobbins/... 9.6 1994 美国 犯罪剧情 886912人评价
霸王别姬 导演:陈凯歌KaigeChen 主演:张国荣LeslieCheung/张丰毅FengyiZha... 9.6 1993 中国大陆香港 剧情爱情同性 886912人评价
这个杀手不太冷 导演:吕克·贝松LucBesson 主演:让·雷诺JeanReno/娜塔莉·波特曼... 9.6 1994 法国 剧情动作犯罪 886912人评价
阿甘正传 导演:RobertZemeckis 主演:TomHanks/RobinWrightPenn/GarySinise 9.6 1994 美国 剧情爱情 886912人评价
美丽人生 导演:罗伯托·贝尼尼RobertoBenigni 主演:罗伯托·贝尼尼RobertoBeni... 9.6 1997 意大利 剧情喜剧爱情战争 886912人评价
千与千寻 导演:宫崎骏HayaoMiyazaki 主演:柊瑠美RumiHîragi/入野自由Miy... 9.6 2001 日本 剧情动画奇幻 886912人评价
辛德勒的名单 导演:史蒂文·斯皮尔伯格StevenSpielberg 主演:连姆·尼森LiamNeeson... 9.6 1993 美国 剧情历史战争 886912人评价
泰坦尼克号 导演:詹姆斯·卡梅隆JamesCameron 主演:莱昂纳多·迪卡普里奥Leonardo... 9.6 1997 美国 剧情爱情灾难 886912人评价
盗梦空间 导演:克里斯托弗·诺兰ChristopherNolan 主演:莱昂纳多·迪卡普里奥Le... 9.6 2010 美国英国 剧情动作科幻悬疑冒险 886912人评价
机器人总动员 导演:安德鲁·斯坦顿AndrewStanton 主演:本·贝尔特BenBurtt/艾丽... 9.6 2008 美国 喜剧爱情科幻动画冒险 886912人评价
海上钢琴师 导演:朱塞佩·托纳多雷GiuseppeTornatore 主演:蒂姆·罗斯TimRoth/... 9.6 1998 意大利 剧情音乐 886912人评价
三傻大闹宝莱坞 导演:拉库马·希拉尼RajkumarHirani 主演:阿米尔·汗AamirKhan/卡... 9.6 2009 印度 剧情喜剧爱情歌舞 886912人评价
忠犬八公的故事 导演:莱塞·霍尔斯道姆LasseHallström 主演:理查·基尔RichardGer... 9.6 2009 美国英国 剧情 886912人评价
放牛班的春天 导演:克里斯托夫·巴拉蒂ChristopheBarratier 主演:杰拉尔·朱诺Géra... 9.6 2004 法国瑞士德国 剧情音乐 886912人评价
大话西游之大圣娶亲 导演:刘镇伟JeffreyLau 主演:周星驰StephenChow/吴孟达ManTatNg... 9.6 1995 香港中国大陆 动作冒险喜剧奇幻爱情 886912人评价
龙猫 导演:宫崎骏HayaoMiyazaki 主演:日高法子NorikoHidaka/坂本千夏Ch... 9.6 1988 日本 儿童动画奇幻家庭 886912人评价
教父 导演:弗朗西斯·福特·科波拉FrancisFordCoppola 主演:马龙·白兰度M... 9.6 1972 美国 剧情犯罪 886912人评价
楚门的世界 导演:彼得·威尔PeterWeir 主演:金·凯瑞JimCarrey/劳拉·琳妮Lau... 9.6 1998 美国 剧情科幻 886912人评价
乱世佳人 导演:维克多·弗莱明VictorFleming/乔治·库克GeorgeCukor 主演:托... 9.6 1939 美国 剧情历史爱情战争 886912人评价
天堂电影院 导演:朱塞佩·托纳多雷GiuseppeTornatore 主演:安东娜拉·塔莉Antonel... 9.6 1988 意大利法国 剧情爱情 886912人评价
触不可及 导演:奥利维·那卡什OlivierNakache/艾力克·托兰达EricToledano 主... 9.6 2011 法国 剧情喜剧 886912人评价
当幸福来敲门 导演:加布里尔·穆奇诺GabrieleMuccino 主演:威尔·史密斯WillSmith... 9.6 2006 美国 剧情传记家庭 886912人评价
熔炉 导演:黄东赫Dong-hyukHwang 主演:孔侑YooGong/郑有美Yu-miJeong... 9.6 2011 韩国 剧情 886912人评价
无间道 导演:刘伟强/麦兆辉 主演:刘德华/梁朝伟/黄秋生 9.6 2002 香港 剧情犯罪悬疑 886912人评价
搏击俱乐部 导演:大卫·芬奇DavidFincher 主演:爱德华·诺顿EdwardNorton/布拉... 9.6 1999 美国德国 剧情动作悬疑惊悚 886912人评价
十二怒汉 导演:SidneyLumet 主演:亨利·方达HenryFonda/马丁·鲍尔萨姆Marti... 9.4 1957 美国 剧情 173189人评价
怦然心动 导演:罗伯·莱纳RobReiner 主演:玛德琳·卡罗尔MadelineCarroll/卡... 9.4 2010 美国 剧情喜剧爱情 173189人评价
星际穿越 导演:克里斯托弗·诺兰ChristopherNolan 主演:马修·麦康纳MatthewMc... 9.4 2014 美国英国加拿大冰岛 剧情科幻冒险 173189人评价
指环王3:王者无敌 导演:彼得·杰克逊PeterJackson 主演:维果·莫腾森ViggoMortensen/... 9.4 2003 美国新西兰 剧情动作奇幻冒险 173189人评价
少年派的奇幻漂流 导演:李安AngLee 主演:苏拉·沙玛SurajSharma/拉菲·斯波RafeSpa... 9.4 2012 美国台湾英国加拿大 剧情奇幻冒险 173189人评价
......
完整代码如下:
import requests
from lxml import html
for i in range(10):
url = 'https://movie.douban.com/top250?start={}&filter='.format(i*25)
con = requests.get(url)
r = con.content
sel = html.fromstring(r)
for i in sel.xpath(
title = i.xpath('div[@class="hd"]/a/span[@class="title"]/text()')[0]
info = i.xpath('div[@class="bd"]/p[1]/text()')
info_1 = info[0].replace(" ", "").replace("
", "")
date = info[1].replace(" ", "").replace("
", "").split("/")[0]
country = info[1].replace(" ", "").replace("
", "").split("/")[1]
geners = info[1].replace(" ", "").replace("
", "").split("/")[2]
rate = i.xpath(
comCount = i.xpath(
print(title,info_1,rate,date,country,geners,comCount)