实战内容:获取豆瓣TOP250电影的中英文名、港台名、导演、上映年份、电影分类以及评分,将数据存放到数据库和文件中。链接为:https://movie.douban.com/top250?start=。
1. 数据爬取
爬取网页数据的方式我们在前面介绍过多种,下面来进行数据的爬取。
1 2 3 4 5 6 7 8 9 10 11 12 13 | import re import requests from bs4 import BeautifulSoup for i in range ( 0 , 2 ): headers = { #这里模拟浏览器进行访问 'user-agent' : 'Mozilla / 5.0 (Windows NT 6.1 ; Win64; x64) AppleWebKit / 537.36 (KHTML, like Gecko) Chrome / 52.0 . 2743.82 Safari / 537.36 ', 'Host' : 'movie.douban.com' } res = 'https://movie.douban.com/top250?start=' + str ( 25 * i) #25次 r = requests.get(res, headers = headers, timeout = 10 ) #设置超时时间 soup = BeautifulSoup(r.text, "html.parser" ) #设置解析方式,也可以 print (soup) |
输出结果为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <!DOCTYPE html> < html class = "ua-windows ua-webkit" > < head > < meta content = "text/html; charset=utf-8" http-equiv = "Content-Type" /> < meta content = "webkit" name = "renderer" /> < meta content = "always" name = "referrer" /> < meta content = "ok0wCgT20tBBgo9_zat2iAcimtN4Ftf5ccsh092Xeyw" name = "google-site-verification" > < title > 豆瓣电影 Top 250 </ title > ........ </ script > <!-- dae-web-movie--default-759d9f45f7-b69fc--> < script >_SPLITTEST=''</ script > </ link ></ link ></ body > </ html > |
2.检查数据
这里我们使用Python中的hashlib模块中的mad5()函数,检查代码如下,如果大家是刚刚爬取到的数据,可以省略这一步。
MD5为计算机安全领域常用的一种加密算法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import hashlib def vertifyupdate(html): md5 = hashlib.md5() md5.update(html.encode(encoding = 'utf-8' )) md5code = md5.hexdigest() print (md5code) old_html = '' htlm_name = 'gp.txt' if os.path.exists(htlm_name): with open (htlm_name, 'r' ,encoding = 'utf-8' ) as f: old_html = f.read() if md5code = = old_html: print ( '数据未更新' ) return False else : with open (htlm_name, 'w' ,encoding = 'utf-8' ) as f: f.write(md5code) print ( '数据更新了' ) return True |
这个函数需要导入hashlib模块,然后创建一个md5的对象,把当前页面的信息传入,通过使用updata()方法对传入的数据进行MD5运算。
然后使用if语句判断文件是否存在,如果存在就读取其中的MD5码,再通过判断两次的MD5码是否相同,如果一样就表示没有更新,反之则进行了更新,把新的MD5码传到文件中。
3. 总结
爬取数据是我们要做的第一步,如果数据存放了很久再进行使用则需要进行检测,这都是相对简单的步骤,比较麻烦的就在于如何去获取到更精准的数据,下一节我们来数据分析。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程