700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python爬虫豆瓣电影top250

Python爬虫豆瓣电影top250

时间:2020-05-31 19:18:25

相关推荐

Python爬虫豆瓣电影top250

我的另一篇博客,Python爬虫豆瓣读书评分9分以上榜单

有了上次的基础,这次简单爬了下豆瓣上电影TOP250,链接豆瓣电影TOP250。

打开链接,查看网页源代码,查找我们需要的信息的字段标签,本次以标题、概要、评分、图片为目标,分别进行处理、获取并保存。(当然最根本的前提依然是通过url获取到网页的源代码)

本实例完整代码请移步github:

/selfcon/douban_movie_scraper_python

推荐正则表达式在线检测工具:

/regex/

1、源代码html

# 获取网页源代码def getHtml(url):page = urllib.request.urlopen(url);html = page.read();return html;

2、标题title

从源代码中可以发现,标题有多个,而我们需要的是首标题。因此需要对通过正则表达式获得的结果进行相应的处理。

# 通过正则表达式获取该网页下的每部电影的titledef getName(html):nameList = re.findall(r'<span.*?class="title">(.*?)</span>', html, re.S);global topnumnewNameList = [];for index,item in enumerate(nameList):if item.find("&nbsp") == -1:#通过检测&gt或者&nbsp这种HTML转义符,只保留第一个标题newNameList.append("Top " + str(topnum) + " " + item);topnum += 1;return newNameList;

3、概要introduction

通过源代码可以找到相应的标签,编写正则表达式(ps:由于有的电影没有概要介绍,所以在最后的数据存储中没存储该属性

# 通过正则表达式获取该网页下的每部电影的introductiondef getInfo(html):infoList = re.findall(r'<span.*?class="inq">(.*?)</span>', html, re.S);return infoList;

4、评分rating

# 通过正则表达式获取该网页下的每部电影的rating_numdef getScore(html):scoreList = re.findall(r'<span.*?class="rating_num".*?property="v:average">(.*?)</span>', html, re.S);return scoreList;

5、图片img

# 通过正则表达式获取该网页下的每部电影的imgdef getImg(html):imgList = re.findall(r'<img.*?alt=.*?src="(https.*?)".*?class.*?>', html, re.S);return imgList;

6、翻页page

我们发现一共250条记录,每页10条,共25页

# 实现翻页,每页25个for page in range(0,250,25):url = "/top250?start={}".format(page)html = getHtml(url).decode("UTF-8");namesUrl.extend(getName(html));scoresUrl.extend(getScore(html));infosUrl.extend(getInfo(html));imgsUrl.extend(getImg(html));

7、打印print

# 将获得的信息进行打印,并存给列表allinfo,方便存储allInfo = [];if len(namesUrl) == len(scoresUrl) == len(imgsUrl):length = len(namesUrl);for i in range(0,length):print(namesUrl[i]+" , score = "+scoresUrl[i]+" ,\n imgUrl="+imgsUrl[i]);tmp = [];tmp.append(namesUrl[i]);tmp.append(scoresUrl[i]);tmp.append(imgsUrl[i]);allInfo.append(tmp);

8、存储store

# 将获得的数据进行存储def save_to_csv(list_tmp):with open('D:/movie.csv','w+',newline='') as fp:a = csv.writer(fp,delimiter=',');a.writerow(['name','score','imgurl']);a.writerows(list_tmp);

9、结果result

------至所有正在努力奋斗的程序猿们!加油!!

有码走遍天下 无码寸步难行

1024 - 梦想,永不止步!

爱编程 不爱Bug

爱加班 不爱黑眼圈

固执 但不偏执

疯狂 但不疯癫

生活里的菜鸟

工作中的大神

身怀宝藏,一心憧憬星辰大海

追求极致,目标始于高山之巅

一群怀揣好奇,梦想改变世界的孩子

一群追日逐浪,正在改变世界的极客

你们用最美的语言,诠释着科技的力量

你们用极速的创新,引领着时代的变迁

——乐于分享,共同进步,欢迎补充

——Treat Warnings As Errors

——Any comments greatly appreciated

——Talking is cheap, show me the code

——诚心欢迎各位交流讨论!QQ:1138517609

——CSDN:/u011489043

——简书:/u/4968682d58d1

——GitHub:/selfconzrr

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。