妹子图爬取__RE__BS4
妹子图爬取
页面链接
感谢崔大佬: 原文链接
正则实现代码:
import requests
import re
import os
import random class mzitu(): def __init__(self):
self.headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
'Referer': 'http://i.meizitu.net'}
self.folder_path = str(os.getcwd()) def all_url(self, url):
html = self.request(url).text
all_a_re = r'<a\shref="(http://www.mzitu.com/\d+)"\starget="_blank"'
pattern = re.compile(all_a_re)
all_a_list = re.findall(pattern, html)
# for href in all_a_list:
# self.html(href)
self.html(random.choice(all_a_list)) def html(self, href):
html = self.request(href).text
title_pattern = re.compile(r'<h2\sclass="main-title">(.*?)</h2>', re.S)
title = re.findall(title_pattern, html)
self.mkdir(str(title))
max_pattern = re.compile(r'<span>(\d*?)</span>', re.S)
max_num = re.findall(max_pattern, html)
max_num = int(max_num[-1])
for i in range(max_num):
page_url = href + "/" + str(i)
self.img(page_url) def mkdir(self, folder):
path = str(folder.strip())
os.makedirs(os.path.join(self.folder_path, path))
print(str(folder) + "------已创建")
os.chdir(self.folder_path + str("/") + path) def img(self, page_url):
img_html = self.request(page_url).text
img_url_re = r'<img\ssrc="(.*?)"\salt=".*?"'
pattern = re.compile(img_url_re, re.S)
img_all = re.findall(pattern, img_html)
img_url = img_all[0]
self.save(img_url) def save(self, img_url):
name = img_url[-6:]
print(name + "正在下载")
img = self.request(img_url)
f = open(name, 'wb')
f.write(img.content)
f.close() def request(self, url): # 这个函数获取网页的response 然后返回
response = requests.get(url, headers=self.headers)
return response Mzitu = mzitu() # 实例化
Mzitu.all_url('http://www.mzitu.com/all')
BS4实现代码:
import requests
from bs4 import BeautifulSoup
import os
import random class mzitu(): def __init__(self):
self.headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
'Referer': 'http://i.meizitu.net'}
self.folder_path = str(os.getcwd()) def all_url(self, url):
html = self.request(url) # 调用request函数把套图地址传进去会返回给我们一个response
all_a = BeautifulSoup(html.text, 'lxml').find(
'div', class_='all').find_all('a') # for i in range(1, len(all_a)):
# a = all_a[i]
a = random.choice(all_a)
title = a.get_text()
print(u'开始保存:', title) # 加点提示不然太枯燥了
# 我注意到有个标题带有 ? 这个符号Windows系统是不能创建文件夹的所以要替换掉
path = str(title).replace("?", '_')
self.mkdir(path) # 调用mkdir函数创建文件夹!这儿path代表的是标题title哦!!!!!不要糊涂了哦!
href = a['href']
# 调用html函数把href参数传递过去!href是啥还记的吧? 就是套图的地址哦!!不要迷糊了哦!
self.html(href) def html(self, href): # 这个函数是处理套图地址获得图片的页面地址
html = self.request(href)
self.headers['referer'] = href
max_span = BeautifulSoup(html.text, 'lxml').find(
'div', class_='pagenavi').find_all('span')[-2].get_text()
for page in range(1, int(max_span) + 1):
page_url = href + '/' + str(page)
self.img(page_url) # 调用img函数 def img(self, page_url): # 这个函数处理图片页面地址获得图片的实际地址
img_html = self.request(page_url)
img_url = BeautifulSoup(img_html.text, 'lxml').find(
'div', class_='main-image').find('img')['src']
self.save(img_url) def save(self, img_url): # 这个函数保存图片
name = img_url[-6:]
print(name + "正在下载")
img = self.request(img_url)
f = open(name, 'ab')
f.write(img.content)
f.close() def mkdir(self, path): # 这个函数创建文件夹
path = path.strip()
isExists = os.path.exists(os.path.join(self.folder_path, path))
if not isExists:
print(path)
os.makedirs(os.path.join(self.folder_path, path))
os.chdir(self.folder_path + str("/") + path) # 切换到目录
return True
else:
print(u'名字叫做', path, u'的文件夹已经存在了!')
return False def request(self, url): # 这个函数获取网页的response 然后返回
content = requests.get(url, headers=self.headers)
return content Mzitu = mzitu() # 实例化
Mzitu.all_url('http://www.mzitu.com/all') # 给函数all_url传入参数 你可以当作启动爬虫(就是入口)
妹子图爬取__RE__BS4的更多相关文章
- Python爬虫入门教程 12-100 半次元COS图爬取
半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...
- Python爬虫入门教程: 半次元COS图爬取
半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...
- 爬虫 (4)- Selenium与PhantomJS(chromedriver)与爬取案例
Selenium文档 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器 ...
- Scrapy框架实战-妹子图爬虫
Scrapy这个成熟的爬虫框架,用起来之后发现并没有想象中的那么难.即便是在一些小型的项目上,用scrapy甚至比用requests.urllib.urllib2更方便,简单,效率也更高.废话不多说, ...
- Python爬取地图瓦片
由于要在内网开发地图项目,不能访问在线的地图服务了,就想把地图瓦片下载下来,网上找了一些下载器都是需要注册及收费的,否则下载到的图都是打水印的,如下: 因为地图瓦片就是按照层级.行.列规则组织的一张张 ...
- python爬取拉勾网数据并进行数据可视化
爬取拉勾网关于python职位相关的数据信息,并将爬取的数据已csv各式存入文件,然后对csv文件相关字段的数据进行清洗,并对数据可视化展示,包括柱状图展示.直方图展示.词云展示等并根据可视化的数据做 ...
- Python协程爬取妹子图(内有福利,你懂得~)
项目说明: 1.项目介绍 本项目使用Python提供的协程+scrapy中的选择器的使用(相当好用)实现爬取妹子图的(福利图)图片,这个学会了,某榴什么的.pow(2, 10)是吧! 2.用到的知 ...
- Python爬虫入门教程 2-100 妹子图网站爬取
妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...
- Python3爬虫系列:理论+实验+爬取妹子图实战
Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...
随机推荐
- 5. 把一幅彩色图像的H、S、I分量单独显示。
#include <cv.h> #include <highgui.h> # include <math.h> #define M_PI 3.1415 void R ...
- 机器学习框架ML.NET学习笔记【7】人物图片颜值判断
一.概述 这次要解决的问题是输入一张照片,输出人物的颜值数据. 学习样本来源于华南理工大学发布的SCUT-FBP5500数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间 ...
- 监听textarea数值变化
监听textarea数值变化 $('#id').bind('input propertychange', function(){ //TODO });
- 【Unity3D】射箭打靶游戏(简单工厂+物理引擎编程)
打靶游戏: 1.靶对象为 5 环,按环计分: 2.箭对象,射中后要插在靶上: 3.游戏仅一轮,无限 trials: 增强要求: 添加一个风向和强度标志,提高难度 游戏成品图: U ...
- 【机器学习实战】第2章 K-近邻算法(k-NearestNeighbor,KNN)
第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法主要是用来进行分类的. KNN 场景 电影可以按照题材分类,那么如何区分 动作片 和 爱情片 呢? 动作 ...
- uvm_mem——寄存器模型(十二)
看完了寄存器,再来看看存储器: //------------------------------------------------------------------------------ // ...
- PLSQL Developer 12 保存登录的用户名和密码
1. 登录 PLSQL Developer PLSQL Developer > Preferences 2. Preferences > Logon History > Defini ...
- 1.2 the structure of a compiler
Compiler 1.2 the structure of a compiler Compiler : analysis and synthesis syntactically 语法上的 sema ...
- ADO.Net——增、删、改、查
数据访问 对应命名空间:System.Data.SqlClient; SqlConnection:连接对象 SqlCommand:命令对象 SqlDataReader:读取器对象 CommandTex ...
- ueditor1_3_6 一点问题记录
文件:getRemoteImage.php 第49行: if ( !in_array( $fileType , $config[ 'allowFiles' ] ) || stristr( $heads ...