赞
踩
目录
创建完成后,就可以开始编写代码了
需要注意的是,不是相同版本的python也能使用此代码,在这里我使用的是虚拟环境中创建的python3.8版本。如何创建虚拟环境,可以参考之前发表的博客。
import os
import re
import requests
def get_html(url,headers,params): response = requests.get(url,headers=headers,params=params) #源代码的编写方式 response.encoding = "utf-8" if response.status_code == 200: return response.text else: print("错误")
编写完成如下所示:
#提取图片源地址 def parse_pic_url(html): result = re.findall('thumbURL":"(.*?)"',html,re.S) return result
#获取图片二进制码 def get_pic_content(url): response = requests.get(url) return response.content
#定义一个新建文件夹程序 def create_fold(fold_name): #异常处理 try: os.mkdir(fold_name) except: print("文件夹已存在")
def save_pic(fold_name,content,pic_name): with open(fold_name + "/" + str(pic_name)+".jpg","wb") as f: f.write(content) f.close()
#定义main函数调用get_html函数 def main(): #输入文件夹名字 fold_name = input("请输入图片名:") #输入你要抓取的数量 page_num = input("请输入你要抓取的页数") #调用函数,创建文件夹 create_fold(fold_name) #定义图片名字 pic_name = 1 #构建循环.控制页面 for i in range(int(page_num)): url="" headers = { } params = { } html = get_html(url,headers,params) result = parse_pic_url(html) #使用for循环遍历列表 for item in result: #调用函数,获取二进制源码 pic_content = get_pic_content(item) save_pic(fold_name,pic_content,pic_name) pic_name += 1 print("正在保存第"+str(pic_name)) #执行main函数 if __name__ == '__main__': main()
爬虫的编码就完成了,接下来是如何爬取到我们想要的图片教程
完整编码如下所示:
#导入相应的库 import os import re import requests #获取网站源代码 def get_html(url,headers,params): response = requests.get(url,headers=headers,params=params) #源代码的编写方式 response.encoding = "utf-8" if response.status_code == 200: return response.text else: print("错误") #提取图片源地址 def parse_pic_url(html): result = re.findall('thumbURL":"(.*?)"',html,re.S) return result #获取图片二进制码 def get_pic_content(url): response = requests.get(url) return response.content def save_pic(fold_name,content,pic_name): with open(fold_name + "/" + str(pic_name)+".jpg","wb") as f: f.write(content) f.close() #定义一个新建文件夹程序 def create_fold(fold_name): #异常处理 try: os.mkdir(fold_name) except: print("文件夹已存在") #定义main函数调用get_html函数 def main(): #输入文件夹名字 fold_name = input("请输入图片名:") #输入你要抓取的数量 page_num = input("请输入你要抓取的页数") #调用函数,创建文件夹 create_fold(fold_name) #定义图片名字 pic_name = 1 #构建循环.控制页面 for i in range(int(page_num)): url="" headers = { } params = { } html = get_html(url,headers,params) result = parse_pic_url(html) #使用for循环遍历列表 for item in result: #调用函数,获取二进制源码 pic_content = get_pic_content(item) save_pic(fold_name,pic_content,pic_name) pic_name += 1 print("正在保存第"+str(pic_name)) #执行main函数 if __name__ == '__main__': main()
打开百度浏览器,搜索你想要的图片名,这里以风景图片为例
右键任意位置,选择检查按钮
选择Network
刷新并下拉网页
这时候我们会发现,Network里面的数据会越来越多
我们选中一个反复出现的acjson开头的数据,再点击Response,再看到bdFmtDispNum,我们会发现该条数据包含约78000张图片,此时我们便可以选择它作为我们要爬取的对象。
我们选择Header,找到里面的Request URL,将该目录下的网址复制下来,粘贴到我们的框架里面
具体位置在#定义main函数调用get_html函数里面,将该内容粘贴进url的括号里面,并用""将网址选中。
之后我们选择Header,找到里面的Request Headers,将该目录下的所有数据复制下来,粘贴到我们的框架里面
具体位置在#定义main函数调用get_html函数里面,将该内容粘贴进html的括号里面,要在每个段落添加"",这样才能正常使用,如果数据本身带有"" ,我们应该使用''。具体样式如下
接下来我们选择Payload,将Query String Parameters中的所有数据复制,粘贴到我们的框架中
具体位置在header的后面,同样要在每个段落添加"",这样才能正常使用,如果数据本身带有"" ,我们应该使用''。这里我们还要将没有数据的代码删掉。具体样式如下
这时,我们便可以开始爬取图片了,不过在此之前,我们还要做一些改动,便于我们更方便的爬取图片。
在params中修改三个数据
"word": fold_name, "queryWord": fold_name, "pn": str(int(i+1)*30),
如图
这时,我们便能正常使用爬虫代码了
至此,教程结束,如有任何问题,可在评论区留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。