Python爬取美女照片

也学了两个星期的Python了,从第一次看就有点爱上他的从动。感觉这门语言真的既简洁,同时功能也很强大。工作中遇到使用脚本的情景应该比较多,建议读者如果要学一门脚本的话,就学Python。哈哈哈哈。

学习Python,鬼使神差对网页爬虫很有兴趣,也一直在研究,路很长,我只是一个初学者。接下来介绍怎么爬取一个美女图片的网页。

分析

我们爬取的网址是"https://tuchong.com"其中的美女图片,第一次尝试是:

url = "https://tuchong.com/tags/%E7%BE%8E%E5%A5%B3/"
header = {"User-Agent": "Mozilla/5.0"}
res = urllib2.Request(url, headers=header)
response = urllib2.urlopen(res)
data = response.read()
复制代码

虽然爬取到了网页,但是没有我们想要的美女图片数据。这时其实可以考虑两点:

  • 我们header加的内容缺少了,可以通过浏览器仔细查看header
  • 网页的数据时通过接口请求回来之后通过js加载的。

事实证明是第二点 接下来我们看调试面板

通过仔细观察我们找到了一个接口地址,而且通过'Preview'可以观察到返回的数据确实是我们想要的,而且可以看到数据返回是json

开始爬取

# -*- coding: utf-8 -*-

import urllib2
import json
import re

def __getgirlpicturesData(page):
    url = "https://tuchong.com/rest/tags/%E7%BE%8E%E5%A5%B3/posts?page="+str(page)+"&count=20"
    header = {"User-Agent": "Mozilla/5.0"}
    res = urllib2.Request(url, headers=header)
    response = urllib2.urlopen(res)
    data = response.read()
    josndata = json.loads(data)#通过json解析数据
    return josndata["postList"]


def getalllurls():
    urls = []
    for index in range(1, 10):#爬取9页的数据,并且获得图片的URL
        data = __getgirlpicturesData(index)
        for item in data:
            if item["type"] == "text":
                urls.append(item["title_image"]["url"])
            elif "cover_image_src" in item.keys():
                urls.append(item["cover_image_src"])
    return urls


def dowloadpicture(url):
    print(url)
    try:
        name = re.search("/\w*\.(jpeg|jpg)", url).group()#通过正则匹配图片地址最后的名字
    except:
        print("异常网址" + url)
    else:
        data = urllib2.urlopen(url).read()
        path = "/Users/xx/Desktop/picture"+name
        file = open(path, "w+")#将图片存储到本地
        file.write(data)
        file.close()


if __name__ == "__main__":
    urls = getalllurls()
    for url in urls:
        dowloadpicture(url)
复制代码

爬取之后作者第一次尝试写了一个小脚本,将所有的图片重命名。

# -*- coding: utf-8 -*-
import os

path = raw_input("请输入地址").strip()

li = os.listdir(path)
num = 0
for file in li:
    num += 1
    name = str(num)+".jpg"
    os.rename(path+"/"+file, path+"/"+name)
print("修改成功")
复制代码

再一次感受到了学习一门脚本语言的方便性。

花絮

作者尝试过二维码识别pytesseract,装环境花了不少时间,但是最后识别结果不是很理想;而且发现了一个比较有趣的东西itchat可以通过Python实现自动回复啥的,大家有兴趣可以玩玩

总结

今年过年前应该是最后一篇文章了,从开始搭建博客到现在已经写了48篇文章,也是有一点小成就感。很多人问:为啥要写博客,有什么用?其实好处的话,当你写的越来越多的时候自然而的就明白了,不用别人去说。这里我想说的是让我们在分享中成长吧。

我的博客

FlyOceanFish

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值