1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 爬虫学习日记第三篇(使用正则爬取豆瓣某单个页面中图片和爬取喜剧电影排行榜保存成cs

爬虫学习日记第三篇(使用正则爬取豆瓣某单个页面中图片和爬取喜剧电影排行榜保存成cs

时间:2022-08-29 02:24:53

相关推荐

爬虫学习日记第三篇(使用正则爬取豆瓣某单个页面中图片和爬取喜剧电影排行榜保存成cs

举出的三个点,由浅入深

目录

1、如何爬取图片数据2、爬取豆瓣页面图片3、爬取喜剧电影排行榜

1、如何爬取图片数据

import requestsif __name__=="__main__":url='/qqlive/img/jpgcache/files/qqvideo/hori/q/qsmjp87yyoqm7fy.jpg'#content返回的是二进制形式的图片数据#text 字符串 content 二进制 json() 对象image_data=requests.get(url=url).contentwith open('./longmao.jpg','wb') as fp:fp.write(image_data)

2、爬取豆瓣页面图片

我想爬取这些电影的封面图片

把这个网页拖到最后,发现并没有发送ajax请求,这就是一个单个的页面

打开源码分析一下

找到了我们想要的图片的位置

编写简单的正则获取图片的url

obj = pile(r'<tr class="item">.*?<a.*?<img src="(?P<srcs>.*?)"',re.S)

可以直接开始写代码了

import requestsimport reimport osif __name__=="__main__":if not os.path.exists('./pictures'):os.mkdir('./pictures')url='/chart'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'}response=requests.get(url=url,headers=headers)text=response.textobj = pile(r'<tr class="item">.*?<a.*?<img src="(?P<srcs>.*?)"',re.S)result=obj.finditer(text)for it in result:src=it.group('srcs')imgName=src.split('/')[-1]imgPath='./pictures/'+imgNameimage_data = requests.get(url=src).contentwith open(imgPath, 'wb') as fp:fp.write(image_data)

就得到我们想要的图片了

3、爬取喜剧电影排行榜

比如,我想爬取喜剧排行榜,前一百名的电影名称,主演,电影封面

拖动到页面最后,发现他会自动进行页面局部刷新,但是url没有变,是ajax请求

使用浏览器简单抓包工具

抓包的时候,你把页面往下拖,达到刚才局部刷新的效果

抓到了一个hxr包,打开

get方式

返回数据类型为json类型

get参数

预览一下发现这个json数据里面就有我们需要的信息

可以编写代码了

import requestsimport jsonif __name__=="__main__":headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'}url="/j/chart/top_list"#url携带参数,最好把参数存放在字典里面,原url为/j/chart/top_list?type=24&interval_id=100:90&action=&start=20&limit=20param={'type':'24','interval_id': '100:90','action':'','start':'0', #从库中第几部电影开始'limit':'100', #一次取出的个数}response=requests.get(url=url,params=param,headers=headers)list_data=response.json()#这是直接把json数据保存起来了fp=open('./douban.json','w',encoding='utf-8')json.dump(list_data,fp=fp,ensure_ascii=False)fw=open("rank.csv","w",encoding='gb18030', errors='ignore')#下面我要只取出我想要的数据for i in list_data:ls=[str(i['rank']),str(i['title']),str(i['release_date'])]fw.write(",".join(ls) + "\n")print('over')

我没有写保存100张图片了,大家如果有兴趣的话可以自己试一下,这里已经基本上写完了

json解析网站

把json数据放到解析网站上,可以更清楚分析json数据

如果有什么错误,还望指正,感谢观看!!😝

视频学习链接,我是跟着这个视频学习的

爬虫学习日记第三篇(使用正则爬取豆瓣某单个页面中图片和爬取喜剧电影排行榜保存成csv文件)

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