百度贴吧图片抓取工具

本着周末逛贴吧看图片,发现电脑运行内存太小,网页加载太慢,一怒之下写个爬虫把图片都下载到本地慢慢看

得到结果如下:

千张内涵图随意浏览

程序第一个选项:

对应的贴吧是:

第二个选项:

对应的贴吧是

抓取的对象为楼主所发的图片:

好的,开搞:

下面是基于python3写的

通过观察,得到爬虫思路为:

思路
1、搜索什么贴吧kw
2、贴吧内的什么贴qw
3、进入贴吧href="/p/
4、图片<img src="
5、页数pn=

第一步思路是构造网址,观察看到贴吧网址为:

代码为

# 输入的文字转码
kw = input("请输入贴吧:")
qw = input("请输入进入的贴:")
qw = urllib.parse.quote(qw.encode(‘gbk‘))
kw = urllib.parse.quote(kw.encode(‘gbk‘))
# 抓取的页数
page = input("你要抓取的页数(每页10个贴):")
# 构造一级网址
url_1 = "http://tieba.baidu.com/f/search/res?isnew=1&kw=" + str(kw) + "&qw=" + str(qw) + "%ED&rn=10&un=&only_thread=1&sm=1&sd=&ed=&pn=" + str(page)

第二观察解析的网址

每个网址的子贴吧都包含href="/p/

就写个正则:

1 # 第一次网址匹配
2 def reg_1(html_1):
3     reg = r‘(href="/p/)(.+?)(pid)‘
4     all = re.compile(reg);
5     alllist = re.findall(all, html_1)
6     return alllist

得到全部的搜索吧的网址了

那么就解析getHtml()

解析后观察发现楼主的图片都有<img src="

再写个正则:

1 # 第二次网址匹配
2 def reg_2(html_2):
3     reg = r‘(<img src=")(.+?g)(" width=)‘
4     all = re.compile(reg);
5     alllist = re.findall(all, html_2)
6     return alllist

页数的正则也包含:共有....页

那么写个正则:

1 # 贴的页数匹配
2 def reg_page(html_page):
3     reg = r‘(共有.+?)(\d+)(.+?页)‘
4     all = re.compile(reg);
5     alllist = re.findall(all, html_page)
6     return alllist

思路搞定

 爬虫步骤为:

1、先进去得到每一张图片的网址
2、楼主的图片末尾有pic_type,其他人发的没有
3、得到全部图片保存之
4、最后再一起下载

将所有图片的网址保存到一个txt

保存完后再一起下载

这里可以开个线程池

太麻烦不搞了

就直接保存下载

1 # 将image网址写入txt
2 for x in range(0,len(infoarr_2)):
3 save_path = "../imageurl.txt"
4 file_path = open(save_path, ‘w‘)
5 txt = str(txt) + ‘\n‘ + str(infoarr_2[x])
6 if txt:
7     file_path.write(txt)
8     file_path.close()

我保存在imageurl里面

数组是infoarr_2

注意每一次写入都会清空txt,所以我写成:

txt = str(txt) + ‘\n‘ + str(infoarr_2[x])

最后最后下载

 1 file = open(‘../imageurl.txt‘, ‘r‘)
 2 data = file.read().split(‘\n‘)
 3 imaurl = []
 4 num = 0
 5 for y in range(0, len(data)):
 6     imaurl.append(data[y])
 7 for imgPath in imaurl:
 8     try:
 9         # 将图片写入ima文件夹
10         filess = open("../img/" + str(num) + ".jpg", ‘wb‘)
11         filess.write(urllib.request.urlopen(imgPath).read())
12         filess.close()
13
14         print("正在下载" + imgPath)
15         num = num + 1
16     except Exception as err:
17         print(err)
18         pass

完美解决

看图去

软件已经打包到github

自行下载

https://github.com/TTyb/

时间: 2024-10-29 10:46:21

百度贴吧图片抓取工具的相关文章

百度地图兴趣点抓取工具

抓取全国POI数据不是梦,百度抓取工具可实现按区域范围抓取范围内数据,数据坐标为火星坐标,无偏移,数据字段有:NAME,X,Y,ADDRESS,TEL,TYPE,CITY,PROVINCE,百度所有的类型数据都可轻松抓取,没有遗漏,没有错误,不重复,比市面上的工具更加准确,市面的工具是靠步长设置来抓取点位的,有抓取不完整的现象,本工具完全解决了点位遗漏问题,并启用都线程抓取,抓取速度快,全国2000多万兴趣点抓取轻松搞定不遗漏死角.本工具由微创业科技工作室独立完成,本工作室还有地图抓工具,可抓取

百度UEditor编辑器关闭抓取远程图片功能(默认开启)

这个坑娘的功能,开始时居然不知道如何触发,以为有个按钮,点击一下触发,翻阅了文档,没有发现,然后再网络上看到原来是复制粘贴非白名单内的图片到编辑框时触发,坑娘啊............... 问题又来了:今天在写百度UEditor编辑器的[取远程图片功能]时有碰到:该功能如何关闭了? 又花了15分钟左右的时间查阅了[官方文档]以及[官方论坛],都没有找到解决办法,那就查阅下源文件看看,是否有相关的判断呢(本人JS非常烂) 于是马上查阅:ueditor.all.js文件,发现如下代码 // plu

Hawk-数据抓取工具

Hawk-数据抓取工具:简明教程 Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 HAWK是一种数据采集和清洗工具,依据GPL协议开源,能够灵活,有效地采集来自网页,数据库,文件, 并通过可视化地拖拽,快速地进行生成,过滤,转换等操作.其功能最适合的领域,是爬虫和数据清洗. Hawk的含义为“鹰”,能够高效,准确地捕杀猎物. HAWK使用C# 编写,其前端界面使用WPF开发,支持插件扩展.通过图形化操作,能够快速建立解决方案.

arpspoof+driftnet+ ARP欺骗简单图片抓取

arpspoof+driftnet+ ARP欺骗简单图片抓取 driftnet是一款简单而使用的图片捕获工具,可以很方便的在网络数据包中抓取图片.该工具可以实时和离线捕获指定数据包中是图片 环境 受害ip:192.168.228.130 攻击ip:192.168.228.129 网关:192.168.228.2 条件 1,开启或关闭IP转发 2,向被攻击机器发送arp欺骗数据包,冒充网关 3,向网关发送arp数据欺骗网关,冒充被攻击机器 4,运行driftnet截取图片 开启IP转发功能 cat

多媒体编程——ios摄像头图像抓取工具类

工具类提供预览图像画面,自动处理旋转,并且以主动方式抓取图像(这样帧率可以无限大) 系统的接口多是异步接收图像,像我这种强迫症怎么受得了,必须吧被动接收图像的方式改成主动抓取. 头文件 #import <Foundation/Foundation.h> #import <AVFoundation/AVFoundation.h> //这些比例都是4:3的比例. typedef enum TKVideoFrameSize { tkVideoFrame480x360 = 480 <

简单的图片抓取demo

原文:简单的图片抓取demo 源代码下载地址:http://www.zuidaima.com/share/1568741405854720.htm 昨天看到同学在一张张右键图片,感觉好麻烦,今天上午就查了一下资料,弄了个图片抓取器. 用到jsoup和 io包,我放在压缩文件里了. 新手刚刚弄,可能会有考虑不好的地方,欢迎大家多多指教. 主要代码: 01 //遍历保存 02 Iterator<String> i = imgSrcSet.iterator(); 03             whi

[python应用]python简单图片抓取

前言 emmmm python简单图片抓取 1 import requests 2 import threading 3 import queue 4 from subprocess import Popen,PIPE 5 from bs4 import BeautifulSoup as bs 6 import urllib 7 import base64 8 9 10 queue=queue.Queue() 11 12 class Jiandan(threading.Thread): 13 d

UiBot无法抓取Google Chrome元素和数据抓取工具无法使用的解决方案

UiBot RPA抓取Google Chrome元素建议使用Google Chrome原版浏览器,不建议使用 二次修改的浏览器版本,以确保兼容性最佳.操作流程符合本教程. 如果无法抓取 Google Chrome 浏览器元素,或数据抓取工具无法使用,可以先检查浏览器扩展程序中是否已经安装并启用 UiBot 扩展程序(下载),如果扩展程序已经安装并启用,则浏览器右上角会出现 UiBot 扩展程序的图标,如下图: 如果您的浏览器右上角没有出现这个图标,则可能 UiBot 扩展程序没有安装成功或已启用

图片抓取,根据关键字爬取淘宝或百度前4张图片

通过关键字查询淘宝网或者百度图片,并下载到本地前四张图片 1 private new string Capture(string productTitle) 2 { 3 string result = string.Empty; 4 try 5 { 6 string url = string.Empty; 7 //汉子转码 8 string contant = HttpUtility.UrlEncode(productTitle); 9 url = string.Format(@"https:/