妹子图爬取__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 ...
随机推荐
- (转)Linux下select, poll和epoll IO模型的详解
Linux下select, poll和epoll IO模型的详解 原文:http://blog.csdn.net/tianmohust/article/details/6677985 一).Epoll ...
- windows下利用intellij idea等工具开发erlang
今天突然想在家里去年新买的电脑上写点erlang代码,然后可耻的发现家里的电脑上竟然没有开发环境,果然是去年6月以后没写过erlang代码么╮(╯▽╰)╭? 首先下载需要用的几样东西: ...
- 【Linux】Ubuntu配置zshell&oh-my-zsh
zshell:https://archive.codeplex.com/?p=shell oh-my-zsh: https://github.com/robbyrussell/oh-my-zsh 终极 ...
- 图解HTTP总结
一.TCP/IP 的分层管理 二.TCP/IP通信传输流 ARP地址解析协议参考:https://www.cnblogs.com/csguo/p/7527303.html 三.各种协议与HTTP协议的 ...
- 【Unity3D】实现太阳系
实践要求:写一个程序,实现一个完整的太阳系,其他星球围绕太阳的转速必须不一样,并且不再一个法平面内. 法平面是指过空间曲线的切点,且与切线垂直的平面.要求不在一个法平面内,则在保证所有行星以及太阳在一 ...
- 数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结
一.数据结构:4种--<需补充> 1.堆栈结构: 特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素; 代表类:Stack; 其 ...
- Garmin APP开发之布局
上一章节介绍了garmin app开发的入门,包括garmin-sdk,开发工具的安装部署,文章结尾我们新建了我们的第一个app程序Garmin开发-入门: http://tieba.baidu.co ...
- 事务回滚 DEMO
因为有些事物回滚 查询的时候 可能查出来空值 我们肯定不愿意把空值添加数据库里面 一般基本的是这么写 if (object_id('add_T_Disclose_DiscloseList', 'P' ...
- sqlserver中计算某个特殊字符在字符串中出现的位置
-- ============================================= -- Author: Evan -- Create date: 2018年3月15日10:: -- D ...
- pc端常见布局样式总结(针对常见的)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...