当前位置: 首页 > 后端技术 > Python

一篇文章教你如何使用Python网络爬虫抓取王者荣耀的图片

时间:2023-03-25 21:53:08 Python

【1.项目背景】王者荣耀是当下最火爆的游戏之一。高分辨率的图片很难。(图片受版权保护)。以彼岸桌面网站为例,爬取王者荣耀的图片信息。[2。项目目标】实现获取图片的批量下载。[3.涉及的图书馆和网站]1、网址如下:http://www.netbian.com/s/wangzherongyao/index.htm/2。涉及的库:requests、lxml[4.项目分析】首先,需要解决如何请求下一页的URL。您可以点击下一页的按钮观察网站的变化如下:http://www.netbian.com/s/wangzherongyao/index_2.htmhttp://www.netbian.com/s/wangzherongyao/index_3.htmhttp://www.netbian.com/s/wangzherongyao/index_4.htm观察只有index_()变化,变化的部分被{}代替,然后用for循环遍历这个url,实现多url请求。http://www.netbian.com/s/wangzherongyao/index_{}.htm[5.项目实现】1、我们定义一个类继承object,然后定义init方法继承self,再定义一个main函数main继承self。准备url地址和请求头。importrequestsfromlxmlimportetreeimporttimeclassImageSpider(object):def__init__(self):self.firsr_url="http://www.netbian.com/s/wangzherongyao/index.htm"self.url="http://www.netbian.com/s/wangzherongyao/index_{}.htm"self.headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_11_6)AppleWebKit/537.36(KHTML,likeGecko)Chrome/70.0.3538.77Safari/537.36"}defmain(self):passif__name__=='__main__':spider=ImageSpider()spider.main()2、对网站开发者请求。'''发送请求以获得响应'''defget_page(self,url):res=requests.get(url=url,headers=self.headers)html=res.content.decode("gbk")#网络编码返回html#返回值3、处理请求的数据'''解析数据'''defparse_page(self,html):parse_html=etree.HTML(html)image_src_list=parse_html.xpath('//div[@class="list"]/ul/li/a//@href')forimage_srcinimage_src_list:fa="http://www.netbian.com"+image_src#print(fa)4.在GoogleChrome上,右-单击以选择开发人员工具或按F12。5、右键查看,找到图片二级页面的链接,如下图。6、向二级页面发起请求,遍历得到的URL。bimg_url=parse_html1.xpath('//div[@class="pic-down"]/a/@href')foriinbimg_url:diet="http://www.netbian.com"+i#print(diet)html2=self.get_page(diet)parse_html2=etree.HTML(html2)#print(parse_html2)url2=parse_html2.xpath('//table[@id="endimg"]//tr//td//a/img/@src')7.将获取的图片写入文档,获取图片的title值作为图片的名称。filename=parse_html2.xpath('//table[@id="endimg"]//tr//td//a/@title')foreinfilename:#print(e)dirname="./王者荣耀/"+e+'.jpg'html2=requests.get(url=r,headers=self.headers).content#print(html2)print(dirname)withopen(dirname,'wb')asf:f.write(html2)print("%s下载成功"%filename)8.在main方法中调用,如下所示。因为首页的url是不规则的,我们先判断一下是不是首页。defmain(self):startPage=int(input("Startpage:"))endPage=int(input("Endpage:"))forpageinrange(startPage,endPage+1):ifpage==1:url=self.firsr_urlelse:url=self.url.format(page)#print(url)html=self.get_page(url)print("页面%s抓取成功!!!"%page)#print(html)self.parse_page(html)[6.效果展示】1、运行程序,在控制台输入你要爬取的页面数,如下图所示。2、在控制台显示下载成功的图片信息,如下图。3、可以在本地看到效果图,如下图。[7.总结】1、不建议抓取太多数据,容易造成服务器负载,稍微尝试一下。2、希望本项目能帮助大家下载高清图片。3.本文基于Python网络爬虫,使用爬虫库抓取王者荣耀图片。到实现的时候,总会遇到各种各样的问题。不要好高骛远,踏踏实实去努力,这样才能理解的更深刻。4.英雄众多,请选择自己喜欢的英雄作为桌面壁纸。5、需要本文源码的朋友可以在后台回复“王者荣耀”四个字获取。看完这篇文章你有收获吗?请转发分享给更多的人加入IT分享之家群,请在微信后台回复【进群】如果想深入了解Python网络爬虫和数据挖掘,可以上专业网站:http://pdcfighting.com/