妹子图爬取__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 ...
随机推荐
- 微服务实践分享(2)api网关
1.作用[http://chuansong.me/n/465796751848]: 一个完整的.「面向接入」的API GW需要包含以下功能: 面向运行期 对客户端实现身份认证 通信会话的秘钥协商,报文 ...
- 洛谷P3928 SAC E#1 - 一道简单题 Sequence2
提交地址 题目背景 小强和阿米巴是好朋友. 题目描述 小强喜欢数列.有一天,他心血来潮,写下了三个长度均为n的数列. 阿米巴也很喜欢数列.但是他只喜欢其中一种,波动数列. 阿米巴把他的喜好告诉了小强. ...
- 求逆欧拉函数(arc)
已知欧拉函数计算公式 初始公式:φ(n)=n*(1-1/p1)*(1-1/p2).....*(1-1/pm) 又 n=p1^a1*p2^a2*...*ps^as 欧拉函数是积性函数 那么:φ(n ...
- 十六进制和ASCII之间的转换
2.关于两个byte[]数组的合并: public static byte[] byteMerger(byte[] byte_1, byte[] byte_2) { byte[] byte_3 = n ...
- python+selenium之数据库连接
首先要安装Python和MySQL的连接工具 下载地址如下: https://pypi.python.org/pypi/PyMySQL https://github.com/PyMySQL/PyMyS ...
- sqlserver中计算某个特殊字符在字符串中出现的位置
-- ============================================= -- Author: Evan -- Create date: 2018年3月15日10:: -- D ...
- [C++讨论课] 课堂记录(一)
今天第一次参加c++讨论课,记录下了各组同学的展示的问题或者解决方法,也有一些知识点上的内容,供以后复习参考. 1.常量指针和指针常量问题 常量指针:指向常量的指针,例如const int *p = ...
- checkbox绑定v-for的数据
简述自己遇到的问题,觉得合适就拿去用 我在使用v-for遍历checked复选框数据的时候,数据分为两部分,一个主活动,主活动下面有多个子活动 我实体类的设计是里面加个list放子活动, 页面循环需要 ...
- 批量格式化json
单个文件格式化工具: vscode和sublime都有格式化json的插件. 但是笔者遇到的情况是有几百个文件需要格式化,不可能每个文件都打开,进行分别格式化. 于是写了一个python脚本,非常强大 ...
- kubernetes-jenkins CI/CD平台
软件环境:Jenkins + Kubernetes + Git + Maven + Harbor 发布流程设计 工作流程:手动/自动构建-> Jenkins 调度K8S API->动态生成 ...