前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用python快速爬取小姐姐的美图?(终极解答)

如何用python快速爬取小姐姐的美图?(终极解答)

作者头像
快学Python
发布2021-08-09 11:42:50
3680
发布2021-08-09 11:42:50
举报
文章被收录于专栏:快学Python

最近有一个小伙伴拿一段python代码来问我为什么报错?

我仔细一看:是用来爬取某个网站妹子图的代码,结果发现那个网站已经404了,当然爬不到了。

其实很多初学者都喜欢拿网上的案例作为练习,但是我们的爬虫可能会对一些小网站造成负担。于是它们要么增加了反爬,要么干脆关站了,等几个月后面的初学者再拿博客上的代码去练习,自然困难重重。

授人以鱼不如授人以渔,所以今天只讲最核心的重点,不会过时。学会了可轻松爬取各种图片,不仅仅是妹子图哦。本文示例网站如下:

http://www.keaitupian.cn/meinv/13419.html

今天带大家用python获取网址中的小姐姐写真图。

获取下载链接

打开刚刚的网址,点击鼠标右键,检查,此时进入开发者模式。分析网页代码,可以轻松发现图片所在的标签。

标签内既包含了图片地址,也带有对应名称。新建标签页,复制对应图片url并打开,发现确实是图片的真实下载链接。

那我们可以利用python中的request正则构建获取函数。

代码语言:javascript
复制
def get_url(url):
    response = requests.get(url, headers=headers)
    html = response.text
    urls = re.findall(r'<img src="(.*?)"',html)
    return urls

测试一下

代码语言:javascript
复制
get_url('http://www.keaitupian.cn/meinv/13419.html')

可以看到,输出的列表包含了本页面所有的图片url。

这样我们就完成了爬取图片的第一步。

构建下载函数

第二步,构建下载函数:

代码语言:javascript
复制
def download_img(url,file_name):
    res = requests.get(url)
    img = open(file_name, 'wb')
    img.write(res.content)
    img.close()

简单解释一下,requests发起get请求拿到图片的信息。

open打开文件,以file_name(比如111.jpg)为文件名,wb代表以二进制覆盖写。

图片

  • res.text ==> 获取文本
  • res.content ==> 下载内容

这里我们下载图片使用res.content

批量下载

通过以上两步,我们就构造好了函数get_url()download_img(),下面就可以来调用函数去处理需求了。

代码语言:javascript
复制
urls = get_url('http://www.keaitupian.cn/meinv/13419.html')

for url in urls:
    name = url.split('/')[-1] # 图片名字
    download_img(url,name)
print('下载完毕')

注:由于图片没有名字,就直接拿图片链接的后半部分来命名了,大家也可以换成数字等

这样就轻松爬取了网页中的所有高清大图。

后续提升

前面只给大家说了最核心的部分,即便再复杂的图片下载代码,也离不开这些核心基础。但大家在实际应用中,还是有不少提升的地方的。

1、文章一开始也提过,有一些网站反爬,要先解决反爬问题。

2、本文只演示了一个网页是如何爬取图片的,有一些小伙伴可能会想爬取全站的图片,这里就需要观察翻页效果以及url规律来构建网页链接了。

同时,不同网页对应的图片最好放在不同的文件夹了。

代码语言:javascript
复制
dir_name = re.findall('<h1 class="entry-title">(.*?)</h1>',html)[-1]
if not os.path.exists(dir_name):
    os.mkdir(dir_name)

爬取网页的对应标题作为文件名,先os判断同文件名的文件夹是否存在,如果不存在则自动创建!

3、还有一些读者朋友可能更感兴趣交互功能,那我们可以加一个input()实现一个小交互。

也可以使用一些GUI库来美化下载界面,以及pyinstaller 将代码打包成程序文件。

原创不易,点个赞支持一下吧

人生苦短,快学Python

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 快学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取下载链接
  • 构建下载函数
  • 批量下载
  • 后续提升
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档