Python -- 网络编程 -- 抓取网页图片 -- 图虫网
字符串(str)编码成字节码(bytes),字节码解码为字符串
获取当前环境编码:sys.stdin.encoding
url编码urllib.parse.quote()
url解码urllib.parse.unquote()
列表去重:pages = list(set(pages))
创建文件夹(可多级创建):os.makedirs(folder) os.mkdir()只能单级创建
首先分析网页(图虫网)的URL规律:
根网页地址形如:
http://tuchong.com/tags/人像/?page=[1, 2, 3 ...]
二级网页链接形如:
href="http://tuchong.com/239137/6400827/"
href="http://hezi1984.tuchong.com/6407909/"
目标图片链接形如:
src="http://photos.tuchong.com/27949/f/6915745.jpg"
-----程序源文件:getPic.py-----
import re, os, time
import urllib.parse
import urllib.request
def getHtml(url):#取得网页的html纯文本
return urllib.request.urlopen(url).read().decode('utf-8')
def download(url, filename):#将文件下载到本地
urllib.request.urlretrieve(url, filename)
if __name__ == '__main__':
print('---图虫图片抓取器---')
pageNo = int(input('请输入抓取页面的数字后缀(输入q退出):'))
#url汉字编码处理
url = 'http://tuchong.com/tags/{}/?page={}'.format(\
urllib.parse.quote('人像'), str(pageNo))
#获取页面HTML文本
html = getHtml(url)
#解析HTML文本,得到二级网页的地址(根网页缩略图所指向的链接)
rePage = r'http://tuchong.com/\d+/\d+/|http://\w+(?<!photos).tuchong.com/\d+/'
pages = re.findall(rePage, html)
pages = list(set(pages))
#解析二级网页,下载其中的图片
for page in pages:
print('当前网页:', page)
html2 = getHtml(page)#取得二级网页内容
#解析二级网页中图片地址的正则表达式
rePic = r'http://photos.tuchong.com/.+/f/.+\.jpg'
pics = re.findall(rePic, html2)
pics = list(set(pics))
folder = 'D:/TuChongRenXiang/{}/{}'.format(pageNo, page[-8:-1])
if not os.path.exists(folder):
os.makedirs(folder)
note = open(folder+'/note.txt', 'wt')#在每个文件夹下创建一个日志文件,记录下载地址
note.write('来源网址:'+page+'\n图片原始地址列表:\n')
for pic in pics:
note.write(pic+'\n')
note.close()
print('目标文件夹:', folder)
time.sleep(1)#程序暂停一秒
for pic in pics:
print('当前下载:', pic)
download(pic, folder+'/'+pic[-11:])
print('下载结束。')


Python -- 网络编程 -- 抓取网页图片 -- 图虫网的更多相关文章
- Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子
首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...
- Asp.net 使用正则和网络编程抓取网页数据(有用)
Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...
- python网络爬虫抓取网站图片
本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...
- 如何利用Python网络爬虫抓取微信朋友圈的动态(上)
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- 利用Python网络爬虫抓取微信好友的签名及其可视化展示
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...
- Python3简单爬虫抓取网页图片
现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...
- 抓取网页图片的脚本(javascript)
抓取网页图片的脚本(javascript) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24172223 脚本内容 (没有换行) ...
- 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化
前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...
随机推荐
- Node.js使用MySQL的连接池
使用Nodejs+MySQL肯定比PHP和MySQL的组合更适合做服务器端的开发. 使用Nodejs你会从他的异步行为中获益良多.比如,提升性能,你无须在从已有的MySQL数据库迁移到其他的NoSQL ...
- aop的概述
支付部分,定义IPayService接口并定义支付方法“pay”,并定义了两个实现:“PointPayService”表示积分支付,“RMBPayService”表示人民币支付:并且在每个支付实现中支 ...
- Linq的基本用用法
Linq 的基本用法: Sort , OrderBy, Skip,Take,Where,Compare,Join,Distinct ,InsertRange 等关键词 Select用法 var sel ...
- DevOps Workshop 研发运维一体化(广州站)
第一天对软件开发的需求管理.项目计划和源代码管理进行的全面而深入的介绍,并且为到会的所有开发人员提供现场动手实验的机会,大家兴致高涨,按照我们的操作手册完成了所有实验课题. 第二天主要介绍了最新的自动 ...
- 设计模式之模版方法模式(Template Method Pattern)
一.什么是模版方法模式? 首先,模版方法模式是用来封装算法骨架的,也就是算法流程 既然被称为模版,那么它肯定允许扩展类套用这个模版,为了应对变化,那么它也一定允许扩展类做一些改变 事实就是这样,模版方 ...
- 终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)
Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇. 还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下 ...
- Nginx+IIS部署负载均衡的常见问题
windows 下配置 Nginx 常见问题 一. Nginx配置 找到 conf 目录里的 nginx.conf 文件,配置Nginx #user nobody; #指定nginx进程数 work ...
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
- PropertyPlaceHolderConfigurer中的location是不是用错了?
本文由作者张远道授权网易云社区发布. spring中常用PropertyPlaceHolderConfigurer来读取properties配置文件的配置信息.常用的配置方式有两种,一种是使用loca ...
- docker 下载加速
执行这个命令: curl -SSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud. ...