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-----


 1 import re, os, time
2 import urllib.parse
3 import urllib.request
4
5 def getHtml(url):#取得网页的html纯文本
6 return urllib.request.urlopen(url).read().decode(‘utf-8‘)
7
8 def download(url, filename):#将文件下载到本地
9 urllib.request.urlretrieve(url, filename)
10
11 if __name__ == ‘__main__‘:
12 print(‘---图虫图片抓取器---‘)
13 pageNo = int(input(‘请输入抓取页面的数字后缀(输入q退出):‘))
14 #url汉字编码处理
15 url = ‘http://tuchong.com/tags/{}/?page={}‘.format(16 urllib.parse.quote(‘人像‘), str(pageNo))
17 #获取页面HTML文本
18 html = getHtml(url)
19
20 #解析HTML文本,得到二级网页的地址(根网页缩略图所指向的链接)
21 rePage = r‘http://tuchong.com/\d+/\d+/|http://\w+(?<!photos).tuchong.com/\d+/‘
22 pages = re.findall(rePage, html)
23 pages = list(set(pages))
24
25 #解析二级网页,下载其中的图片
26 for page in pages:
27 print(‘当前网页:‘, page)
28 html2 = getHtml(page)#取得二级网页内容
29 #解析二级网页中图片地址的正则表达式
30 rePic = r‘http://photos.tuchong.com/.+/f/.+\.jpg‘
31 pics = re.findall(rePic, html2)
32 pics = list(set(pics))
33 folder = ‘D:/TuChongRenXiang/{}/{}‘.format(pageNo, page[-8:-1])
34 if not os.path.exists(folder):
35 os.makedirs(folder)
36 note = open(folder+‘/note.txt‘, ‘wt‘)#在每个文件夹下创建一个日志文件,记录下载地址
37 note.write(‘来源网址:‘+page+‘\n图片原始地址列表:\n‘)
38 for pic in pics:
39 note.write(pic+‘\n‘)
40 note.close()
41 print(‘目标文件夹:‘, folder)
42 time.sleep(1)#程序暂停一秒
43 for pic in pics:
44 print(‘当前下载:‘, pic)
45 download(pic, folder+‘/‘+pic[-11:])
46 print(‘下载结束。‘)
47
48
49

Python -- 网络编程 -- 抓取网页图片 -- 图虫网,布布扣,bubuko.com

时间: 2024-08-02 02:46:01

Python -- 网络编程 -- 抓取网页图片 -- 图虫网的相关文章

Asp.net 使用正则和网络编程抓取网页数据(有用)

Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </summary> /// <param name="strUrl">採集地址</param> /// <param name="Begin">開始字符</param> /// <param name="End">结束字符</param&g

Asp.net 使用正则和网络编程抓取网页数据(实用)

Asp.net 使用正则和网络编程抓取网页数据(实用) /// <summary> /// 抓取网页相应内容 /// </summary> /// <param name="strUrl">采集地址</param> /// <param name="Begin">开始字符</param> /// <param name="End">结束字符</param&g

python学习笔记-抓取网页图片脚本

初学者一枚,代码都是模仿网上的.亲测可用~ 运行脚本的前提是本机安装了httplib2模块 #!/usr/bin/python import os import re import string import urllib #author:reed #date:2014-05-14 def GetWebPictures(): url=raw_input('please input the website you want to download:') imgcontent=urllib.urlo

Python爬虫实现抓取网页图片

在逛贴吧的时候看见贴吧里面漂亮的图片,或有漂亮妹纸的图片,是不是想保存下来? 但是有的网页的图片比较多,一个个保存下来比较麻烦. 最近在学Python,所以用Python来抓取网页内容还是比较方便的: 所以就尝试了一下 ------code------- #coding=utf-8 import re    import urllib   //导入模块     def gethtml(url):   //自定义函数,传参获取网页内容    page=urllib.urlopen(url)    

Python爬虫抓取网页图片

本文通过python 来实现这样一个简单的爬虫功能,把我们想要的图片爬取到本地. 下面就看看如何使用python来实现这样一个功能. # -*- coding: utf-8 -*- import urllib import re import time import os #显示下载进度 def schedule(a,b,c): ''''' a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ''' per = 100.0 * a * b / c if per > 100 : per =

如何利用Python网络爬虫抓取微信朋友圈的动态(上)

今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌,小编在网上找到了第三方工具,它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页一样进行抓取信息了. [出书啦]就提供了这样一种服务,支持朋友圈导出,并排版生成微信书.本文的主要参考资料来源于这篇博文:https://www.cnblogs.com/sheng-jie/p/7776495.html

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态--附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化. 今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信的数据

利用Python网络爬虫抓取微信好友的签名及其可视化展示

前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化,感兴趣的小伙伴可以点击进去看看详情,内容方面不是很难,即使你是小白,也可以通过代码进行实现抓取.今天,小编继续给大家分享如何利用Python网络爬虫抓取微信好友的签名及其可视化展示,具体的教程如下所示. 1.代码实现还是基于itchat库,关于这个神奇的库,在之前的文章中

python多线程实现抓取网页

Python实现抓取网页 下面的Python抓取网页的程序比较初级,只能抓取第一页的url所属的页面,只要预定URL足够多,保证你抓取的网页是无限级别的哈,下面是代码: ##coding:utf-8 ''' 无限抓取网页 @author wangbingyu @date 2014-06-26 ''' import sys,urllib,re,thread,time,threading ''' 创建下载线程类 ''' class download(threading.Thread): def __