python来爬取煎蛋网随手拍小姐姐图片
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 。
作者:程序员喧啸
本文使用了requests模块进行发送请求 , 使用了BeautifulSoup模块对网页进行解析 , 在使用之前首先安装这两个第三方库;方法如下:
安装requests库pipinstallrequests2.安装bs4库
pipinstallbs4PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取
忘了说 , 网址是这个
#comments
首先右击页面选择审查元素(快捷键为Fn+F12) , 之后再点击左上角的定位符号来定位图片被存在哪一个标签里面 。 其次我们要将该页面的源码爬取下来 , 以便于下一步解析网页 , 直接上代码来分析 。对以下代码的注释:
我们可以看到定义了一个函数get_totle_page(url) , 说的高大上一点 , 我们采用了模块化的程序设计思想;此处我们说另外一个高大上的名词 , 即UA伪装 , 现在好多网站都建立了反爬虫机制 , UA伪装便是为了告诉浏览器我们的身份是一个浏览器 , 而不是一个爬虫 , 防止被限制访问 。 globalheaders由于接下来我们需要访问图片的地址 , 发送请求信息将其存储下来 , 所以我们将headers定义为全局变量 , 方便请求图片的时候使用 。 很明显 , 程序中我们还加入了异常处理机制 , 可以这么理解 , 当程序连接失败的时候进行异常处理 , 返回值为None 。 defget_totle_page(url):globalheadersheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108Safari/537.36'}try:response=requests.get(url,headers=headers)ifresponse.status_code==200:returnresponse.textexceptrequests.ConnectionError:print("请求数据失败!!!")returnNone通过以上的操作 , 我们发现图片存储在里面的
下的每个标签里面 。 其原图的地址保存在里面的下的标签中的标签的属性值"href"中 。
这一步是将图片的地址链接解析出 , 我的想法是创建一个空列表totle_list=[]进行存储图片的地址链接 。 还是一样的风格 , 简单粗暴 , 直接上代码 。
我们使用的是BeautifulSoup来解析网页 , 先来“煲一锅汤”
soup=BeautifulSoup(html,"lxml")前面我们分析了图片的具体保存的标签位置 , 下面进行解析:
div=soup.find('div',attrs={'id':'comments'})ol_list=div.find(name='ol')forolinol_list.find_all(name='li'):try:text_list=ol.find('div',attrs={'class':'text'})#print(text_list)globala_lista_list='http:'+text_list.p.a['href']#print(a_list)totle_list.append(a_list)except:pass#print(totle_list)returntotle_list需要特别说明的一点 , 在煎蛋网随手拍的网页上面有广告信息 , 然而广告信息也保存在
标签里面 , 所以在解析的过程我们需要跳过保存广告的标签进行解析图片 , 所以我们加入了异常处理机制 , 若标签里面没有 , 直接跳过该标签 , 解析下一个标签 。
我们就需要将解析的图片地址链接进行二进制数据的本地存储了 , 为了保持我们一贯的整洁作风 , 咳咳咳 , 此处需要来一张图修饰一下······
ifnotos.path.exists('./picture_Libs'):os.mkdir('./picture_Libs')接下来进行请求图片的地址链接 , 将图片进行本地的保存 。
循环遍历请求totle_list里面保存的图片的地址链接 , 图片是二进制文件 , 所以使用了response.content 。 img_path='./picture_Libs/'+totle.split('/')[-1]对于该语句是说明了图片的本地保存地址 , 我们选的是新建的文件夹下面 , 用split()语句以“/”对地址连接进行分割 , 选择分割之后的最后一部分作为图片的名字来进行保存 。
fortotleintotle_list:try:response=requests.get(url=totle,headers=headers)ifresponse.status_code==200:response.encoding=response.apparent_encodingimg_data=https://pcff.toutiao.jxnews.com.cn/p/20200811/response.contentexceptTimeoutError:print('请求超时!!!')img_path='./picture_Libs/'+totle.split('/')[-1]#print(img_path)withopen(img_path,'wb')asfp:fp.write(img_data)最后
我们通过主函数将我们的各个功能模块串联起来 , 话不多说 , 上完整代码啦 。
我爬取的url是""+str(i)+"#comments"在爬取煎蛋网随手拍的时候 , 可自行去观察url的不同 , 来寻找规律 , 来构建url进行爬取 。 importrequestsfrombs4importBeautifulSoupimportlxmlimportosdefget_totle_page(url):globalheadersheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108Safari/537.36'}try:response=requests.get(url,headers=headers)ifresponse.status_code==200:returnresponse.textexceptrequests.ConnectionError:print("请求数据失败!!!")returnNonedefget_content_page(html):soup=BeautifulSoup(html,"lxml")totle_list=[]div=soup.find('div',attrs={'id':'comments'})ol_list=div.find(name='ol')forolinol_list.find_all(name='li'):try:text_list=ol.find('div',attrs={'class':'text'})#print(text_list)globala_lista_list='http:'+text_list.p.a['href']#print(a_list)totle_list.append(a_list)except:pass#print(totle_list)returntotle_listdefsave_img_list(message):ifnotos.path.exists('./picture_Libs'):os.mkdir('./picture_Libs')fortotleinmessage:try:response=requests.get(url=totle,headers=headers)ifresponse.status_code==200:response.encoding=response.apparent_encodingimg_data=https://pcff.toutiao.jxnews.com.cn/p/20200811/response.contentexceptTimeoutError:print('请求超时!!!')img_path='./picture_Libs/'+totle.split('/')[-1]#print(img_path)withopen(img_path,'wb')asfp:fp.write(img_data)defmain():foriinrange(6):url=""+str(i)+"#comments"html=get_totle_page(url)message=get_content_page(html)#print(html)save_img_list(message)if__name__=="__main__":main()【python来爬取煎蛋网随手拍小姐姐图片】运行程序之后 , 我们发现了好多好看的小姐姐保存在了我创建的文件夹里面 , 哇 , 没想到一打开一张就是一个背影杀手呀 , 我这该死的运气 。
推荐阅读
- 未来的大学生活“长啥样”? 来看学长为你写下的万字指南
- 吃鸡将迎来寻宝玩法?新地图遍地宝藏,“古老秘密”开启冒险
- 警告!|美国死亡谷气温飙升至54.4℃或打破百年来世界最高温纪录
- 多所在京大学录取线来了 各校设置多条投档线
- 王者荣耀意难平,来聊聊老林的昨天第五局第六局的bp
- 这些星座女最容易在感情里遭遇渣男,赶紧进来避避难吧!
- 本月中旬,真爱值得等待,等来了爱情,将彼此珍惜的四大星座
- 知书达理,这些星座从来不出熊孩子
- 懂车帮|中国版“路虎揽胜”上街,一般人认不出来,堪称百万SUV,15万起
- 本月底,对爱情从来不会强求,即使失败,也能坦然面对的4大星座
