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网络爬虫抓取微信好友的省位和城市,并且将 ...
随机推荐
- FuelPHP 简体中文手册
FuelPHP中文手册 FuelPHP是一个简单的.灵活的.社区驱动的PHP 5.3 web框架,它基于其他框架的最佳思想,是一个全新的开始. 他的诞生源自于很多开发社区对于现有开发框架的不满,Fue ...
- docker 命令介绍
查看镜像 docker images: 列出imagesdocker images -a :列出所有的images(包含历史)docker images --tree :显示镜像的所有层(layer) ...
- day08(异常处理,创建异常,finally,throws和throw的区别)
异常处理, 异常的产生 运行时异常:程序运行中产生的异常:RuntimeException类. 编译时异常:程序在编译时产生的异常:除了RuntimeException类 其他都是编译时产生的 ...
- struts2从浅至深(六)contextMap(存取数据)
A:存数据 1.利用ActionContext存数据 这种方式最简便 这是一个购物车案例 把查询来的数据放入到Session中存储起来 2.利用valuestack值栈存数据 把查询出来的数据放入到值 ...
- Android-LoaderManager异步加载数据库数据
LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...
- JavaLogin小框架制作【精品博客】
做一个小登录接口方法,让用户传入用户名,密码,就可以知道登录的结果信息,并以接口监听的方式控制. 先看客户端执行效果: 输入正确: 输入错误: 模拟客户端使用登录小框架: package com.de ...
- [翻译]NUnit---RequiresSTA and RequiresThread Attributes(十七)
RequiresSTAAttribute (NUnit 2.5) RequiresSTA特性用于测试方法.类.程序集中指定测试应该在单线程中运行.如果父测试不在单线程中运行则会创建一个新的线程. No ...
- 使用redis实现【统计文章阅读量】及【最热文章】功能
1.视图函数 # 不需要登录装饰器,匿名用户也可访问def article_detail(request, id, slug): # print(slug,id) article = get_obje ...
- 初探Angular_02 感受添加组件
首先把目光聚焦在app这个文件夹里面 1.app.module.ts 这个文件是angular根模块,告诉Angular如何组装应用 // 浏览器解析的模块 import { BrowserModul ...
- 为控件动态添加Style
此文可解决: 重写控件时,给控件加入子控件或父控件的样式切换问题. 很灵活的可以根据不同内容显示不同样式 子控件作用在: <DataTemplate x:Key="ColmunHea ...