爬虫学习笔记(五)——VMGIRLS唯美小姐姐的图片不让爬了,怎么办?

系列文章目录

爬虫学习笔记(四)——糗百爬虫遇到的反爬
爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用
爬虫学习笔记(二):requests基础用法之爬取各类主流网站2
爬虫学习笔记(一):requests基础用法之爬取各类主流网站1


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、爬取图片的最简化操作?
  • 二、遇到问题
    • 1.页面无法进入开发者模式
    • 2.完善hearders内容
    • 3.完善代码内容
  • 4.最后的问题
  • 总结


前言

爬虫一入坑,简直没法停下来,欢乐多多,可惜PYTHON爬虫有个很大的缺点就是时效性太差,上次带大家爬完街拍之后,又在B站上学习了一些其他的爬取姿势。后来,因为工作太忙没有更新,代码放了一个月就不能用了,实在是尴尬的很。好在现在视频资料很多,可以很快捡起来。 今天爬取的url地址:https://www.vmgirls.com/XXXXX.html

提示:以下是本篇文章正文内容,下面案例可供参考

一、爬取图片的最简化操作?

示例:爬取图片的最简化操作如下:
1.导入request库,导入RE库;
2.利用request.get()获取URL的内容;利用re进行页面匹配
3.截取其中图片真实的URL地址;
4.利用写入方法将图片以二进制的格式进行储存
with open (url,wb) as f:
f.write()

二、遇到问题

1.页面无法进入开发者模式

由于我们要爬取的地址www.vmgirls.com,是个私人性质的网站,经过之前大多数爬虫的摧残已经不堪重负了,页面进行了一定程度的反扒设置。
例如:直接在Chrome浏览器页面,右键无法被打开。解决办法是在爬取地址前面加上:view-source:https://www.vmgirls.com/xxxxxx.html

2.完善hearders内容

如果没有添加headers,会被直接认为这是爬虫程序,参照之前的教程添加headers里面的内容,'User-Agent’或者‘cookies’,完善信息,减少被反爬的几率。
做到以上几点后,代码内容如下图所示:

import requests
import re
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0'
}
httpurl = 'https://www.vmgirls.com/15643.html'
response = requests.get(httpurl,headers = headers)
html = response.text
urls = re.findall('',html)
te(response.content)print(urls)
for url in urls:
    with open("girl.jpeg",'wb') as f:
        f.write(response.content)

爬虫学习笔记(五)——VMGIRLS唯美小姐姐的图片不让爬了,怎么办?_第1张图片
得到的数据如上图所示,并在程序所在位置生成一个girl.jpeg的图片,显示下载的有数据但暂时无法打开,这个我们最后解决。
从以上程序内容,就是下载静态页面图片的爬虫程序的精简方式了,原理解释完毕。

3.完善代码内容

  1. 爬取页面标题信息并创建目录通过re.findall匹配到页面标题的信息。我们通过页面查询发现标题内容在

    class ="post-title "的标签下面。

 dir_name = re.findall('

(.*?)

'
,html)[-1] if not os.path.exists(dir_name): #如果文件夹不存在,创建文件夹 os.mkdir(dir_name)

2.增加正在下载和下载完毕的提示信息。通过切片功能,将url地址进行切片,获取图片的原名。

file_name = url.split('/')[-1]  #分割后取URL最后一部分内容
 print(file_name+"正在下载")

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210206083844841.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2tuaWdodDAxMTM=,size_16,color_FFFFFF,t_70)

4.最后的问题

虽然我们能获取图片的下载,但是这里网站还是给我们挖了一个坑,这些jpeg图片内容是正确的,但是却无法正常打开,下载的网页地址可以在浏览器打开图片。
后来经过笔者多次尝试发现,这是网站留下的坑,处理办法是将图片后缀改为GIF就好了,这里不太清楚原因是什么。好了,我们总不能手动修改吧,这样太LOW了,增加批量后缀修改功能,这样代码就完成了,一起欣赏小姐姐吧。
爬虫学习笔记(五)——VMGIRLS唯美小姐姐的图片不让爬了,怎么办?_第2张图片

总结

好了,今天就到这里了,今天介绍了图片爬取的基本套路。以及如何趟过学习路上的各种坑,下次见。哦,差点忘了,源代码奉上。

# -*- coding: utf-8 -*-
import os
import time
import requests
# 导入re正则
import re
# 改变自己身份
headers = {  'cookie': "__gads=ID=fc9334cf4a808919-229cda78e8c50071:T=1612417691:RT=1612417691:S=ALNI_MYEC3_vOddOSOwXHSdgBI7YsHKOOg; _ga=GA1.2.1102378475.1612417691; _gid=GA1.2.1324825227.1612417694",
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0'
}
# 请求网页
#网页地址自己可以修改
httpurl = 'https://www.vmgirls.com/15643.html'
response = requests.get(httpurl,headers = headers)
#print(response.request.headers)
#print(response.text)
html = response.text
# 解析网页
# view-source:https://www.vmgirls.com/15159.html
# 链接前加view-source查看网页源代码
dir_name = re.findall('

(.*?)

'
,html)[-1] if not os.path.exists(dir_name): #如果文件夹不存在,创建文件夹 os.mkdir(dir_name) # 正则查找 urls = re.findall('',html) print(urls) # 保存图片 for url in urls: time.sleep(2) # 图片名字 file_name = url.split('/')[-1] #分割后取URL最后一部分内容 responses = requests.get("https:"+url,headers = headers) print(file_name+"正在下载") with open(dir_name + '/' +file_name ,'wb') as f: f.write(responses.content) f.close() print('下载完毕') rootdir = "C:/USERS/USER/PycharmProjects/01_python基础/"+dir_name #这个是程序所在位置地址,每个人不一样,需要自己修改 files=os.listdir(rootdir) for filename in files: portion=os.path.splitext(filename) #portion为名称和后缀分离后的列表 #os.path.splitext()将文件名和扩展名分开 if portion[1]==".jpeg": #如果为tiff则更改名字 newname=portion[0]+".gif" #要改的新后缀 #改好的新名字 print(filename) #打印出要更改的文件名 os.chdir(rootdir) #修改工作路径 os.rename(filename,newname) #在工作路径下对文件名重新命名 #内容非本人原创,代码修修补补 #发布时间:2021-02-05 #作者:咚宝学编程

你可能感兴趣的:(爬虫学习笔记,python,爬虫)