前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫实例四:美女壁纸网站

爬虫实例四:美女壁纸网站

原创
作者头像
远方的星
修改2021-02-26 17:42:26
1K0
修改2021-02-26 17:42:26
举报

一、前言

俗话说:“窈窕淑女,君子好逑”,美女谁不爱啊,于是就对美女网站“发起冲锋”。

二、下载链接分析

首先,我们要找到我们想要爬取的详情页 4K美女

这里的图片就是我们想要的目标。

接下来,我们需要看一下这个页面的源代码进行进一步的分析。(可以选择右击检查或者使用快捷键Ctrl+Shift+I)

以第一张图片为例(代码如下):

出现了源文件标签src,我们就想去拿它后面的内容然后和‘http://pic.netbian.com’部分整和成一个链接,但是如果你提前是网页上去试的话,会出现这个结果。

(为啥是和http://pic.netbian.com这个部分整和呢,因为这是网站首页链接,哈哈哈)

是一张缩略图,不是我们想要的高清大图。

我们再仔细看一下,源文件标签上面还有一个超链接标签,点一下,来到了这个页面:

那我们就再对这个页面进行检查一次好了。

又发现了一个源文件,那我们再和‘http://pic.netbian.com’组合一下试试!

(高清图片过大,传送失败,但就是想要得到的高清图)

那么接下来就是理清思路,开始爬虫吧!

三、代码编写

1、导入模块

代码语言:python
复制
import requests
import re
import os

2、构造请求头

代码语言:python
复制
headers = {
     'user - agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.0.3987.116Safari / 537.36'
}
url='http://pic.netbian.com/4kmeinv/'
response_1=requests.get(url=url,headers=headers)
html_1=response_1.text

3、构造正则表达式

因为我们从详情页到高清图,中间要先去另一个页面,所以我们构造的第一个正则表达式,是去另一个页面的。

在这里插入图片描述
在这里插入图片描述

我们需要的是超链接标签href后面的内容,于是正则表达式可以这样写:

代码语言:python
复制
<a.*?href.+?(/tupian.+?html)

4、完整代码

代码语言:python
复制
import requests
import re
import os

#创建文件夹
if not os.path.exists('D:/4K美女'):
    os.mkdir('D:/4K美女')

headers = {
     'user - agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 80.0.3987.116Safari / 537.36'
}
url='http://pic.netbian.com/4kmeinv/'
response_1=requests.get(url=url,headers=headers)
html_1=response_1.text
image_urls=re.findall('<a.*?href.+?(/tupian.+?html)',html_1,re.S)
# print(image_urls)
for image_url in image_urls:
    picture_urls = 'http://pic.netbian.com' + image_url
    # print(picture_urls)
    response_2 = requests.get(url=picture_urls, headers=headers)
    html_2 = response_2.text
    pictures = re.findall('<div.*?photo-pic.*?<img src="(/uploads.+?jpg).*?alt.+?"(.*?)"', html_2, re.S)

    for picture in pictures:
        picture_url = picture[0]
        picture_src = 'http://pic.netbian.com' + picture_url#高清图的源文件链接

        picture_name = picture[1] + '.jpg'#构建准备保存的图片的名称
        picture_name = picture_name.encode('iso-8859-1').decode('gbk')#这里是防止图片名称出现乱码的情况

        picture_data = requests.get(url=picture_src, headers=headers).content#写入文件的内容——也就是想要的高清大图啦
        picture_path = 'D:/4K美女/' + picture_name#构建图片存储路径

        # 保存图片
        with open(picture_path, 'wb') as f:
            f.write(picture_data)
            print(picture_path, '下载完成')

5、拓展:多页爬取

如果想进行多页爬取,只需要给第一个url做一下for循环处理,即:

代码语言:python
复制
for i in range(2,5):
    url='http://pic.netbian.com/4kmeinv/index_{}.html'.format(i)
    response_1=requests.get(url=url,headers=headers)
    html_1=response_1.text

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、下载链接分析
  • 三、代码编写
    • 1、导入模块
      • 2、构造请求头
        • 3、构造正则表达式
          • 4、完整代码
            • 5、拓展:多页爬取
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档