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

一篇文章教你使用Python网络爬虫获取分类图片

时间:2023-03-25 20:24:10 Python

【1.项目背景】渤海师贝是一个面向互联网从业者的在线教育团队,植根于中国教育行业和互联网行业的创新和眼球。为互联网人打造专业、系统的在线教育平台。精心制作了许多精彩的文章和许多有趣的图片。今天教大家用Python爬取渤海市北的图片,分类保存,写入文档。[2。项目目标】创建文件夹,分类保存所有文章图片。下载成功,结果显示在控制台中。[3.项目分析】1、如何找到真实访问、多个网页请求的地址?滑动鼠标,观察网站,右击F12。鼠标滚轮滑动加载新内容。如图:点击打开一个随机网页,点击打开RequestURL,观察URL规则。https://bh.sb/page/1/https://bh.sb/page/2/https://bh.sb/page/3/https://bh.sb/page/4/观察到,每增加一个page/{}/,就会加1,将转换后的变量替换成{},然后使用for循环遍历URL,实现多URL请求。2、反爬虫处理1)获取正常的http请求头,请求时设置这些正常的http请求头。2)使用fake_useragent生成随机UserAgent进行访问。[4.涉及的库和网站]1、网址如下:https://www.doutula.com/photo/list/?page={}2、涉及的库:requests、lxml、fake_useragent、time、os3、软件:PyCharm[5.项目实现】1、我们定义一个类class继承object,然后定义init方法继承self,再定义一个main函数main继承self。导入所需的库和URL,并创建一个保存文件夹。importrequests,osfromlxmlimportetreefromfake_useragentimportUserAgentimporttimeclassbnotiank(object):def__init__(self):os.mkdir("picture")#记住只在创建的文件夹中添加第一次运行,如果多次运行,请注释掉这一行。defmain(self):passif__name__=='__main__':Siper=bnotiank()Siper.main()2.随机UserAgent,构造请求头防止反爬。ua=UserAgent(verify_ssl=False)foriinrange(1,50):self.headers={'User-Agent':ua.random}3.发送请求,得到响应,回调页面方便下一个请求。'''发送请求以获得响应'''defget_page(self,url):res=requests.get(url=url,headers=self.headers)html=res.content.decode("utf-8")returnhtml4,定义parse_page函数,获取二级页面地址,使用for遍历获取所需字段。defparse_page(self,html):parse_html=etree.HTML(html)image_src_list=parse_html.xpath('//p/a/@href')#print(image_src_list)5.向二级页面发起请求,并xpath解析数据,得到大图链接。reo=parse_html1.xpath('//div//div[@class="content"]')#reo中j的父节点:d=j.xpath('.//article[@class="article-content"]//p/img/@src')[0]text=parse_html1.xpath('//h1[@class="article-title"]//a/text()')[0].strip()6.求图片地址,写入文档。html2=requests.get(url=d,headers=self.headers).contentdirname="./d/"+text+".jpg"#定义图命名withopen(dirname,'wb')asf:f.write(html2)print("%s【下载成功!!!】"%text)7.调用方法实现功能。url=self.url.format(page)print(url)html=self.get_page(url)self.parse_page(html)8.设置延迟。(防止ip被封)。time.sleep(1)"""延时"""[6.【效果展示】1、点击绿色小三角运行输入开始页面和结束页面。2.在控制台显示下载成功信息。3、文字以图片命名,显示效果如下。[7.总结】1、不建议抓取太多数据,容易造成服务器负载,稍微尝试一下。2、本文基于Python网络爬虫,介绍反爬虫技巧,利用爬虫库实现分类图片的获取并存储到文档中。3、希望通过这个项目,能够帮助我理解xpath,字符串是如何拼接的,以及format函数是如何使用的。4、在实施的时候,总会遇到各种各样的问题。不要好高骛远,好好努力,这样才能理解的更深刻。5、需要本文源码的朋友可以在后台回复“渤海时代”获取。想深入了解Python网络爬虫和数据挖掘,可以去专业网站:http://pdcfighting.com/想深入了解Python网络爬虫和数据挖掘,可以去专业网站:http://pdcfighting.com/网站:http://pdcfighting.com/