之前写的文章感觉有点敷衍了事,从这一篇开始将会由知识点——代码——知识点这样进行组织。
今天主要学习豆瓣电影排行榜250实战,说实话,这种东西不用忘得很快。甚至昨天学的今天就忘得差不多了,好在有写工作日志,随时可以复习。
今天的主要工作是豆瓣电影排行榜250实战,找出电影名称,导演,年份和总评价人数。
首先需要导入的包:requests,csv,re
#拿到页面源代码 #通过re提取数据 import requests import re import csv
然后获得网页源代码,注意UA设置,绕过防爬设置。还有要记得把resp关闭掉,别被豆瓣关闭了IP。
url="https://movie.douban.com/top250" headers={ "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62" } resp=requests.get(url,headers=headers) resp.close() pageinfo=resp.text
然后是解析数据,今天知识点的重点在于正则解析式的撰写
#解析数据 obj=re.compile(r'<li>.*?<span class="title">(?P<name>.*?)' r'</span>.*?<br>.*?(?P<year>\d+)' r' .*?<span class="rating_num" property="v:average">(?P<score>.*?)' r'</span>.*?<span>(?P<people>.*?)人评价',re.S) result=obj.finditer(pageinfo) for i in result: # print(i.group("name")) # #i.group("year").strip(),如果我们没有跳过所有空白,就在最后打印的时候加上.strip() # print(i.group("year")) # print(i.group("score")) # print(i.group("people"))
最后为了后续的数据分析处理,我们把导出的数据导入CSV文件中
f=open("data.csv",mode="w",encoding="utf-8") csvwriter=csv.writer(f)
for i in result: dic = i.groupdict() csvwriter.writerow(dic.values())
f.close() print("over!")
最后的data.csv如图所示
结束,明天开始BS4解析,后面是XPATH解析