宅男福利--利用Python简单爬图
Ver beta..代码粗陋。
使用说明以Windows为例, Python版本为2.7.6
- 确认你电脑已经安装了Python, Windows默认安装路径为C:\Python27。如果没有安装,先下载安装 https://www.python.org/download/releases/2.7.6
- 下载mechanize (mechanize-0.2.5.zip)和BeautifulSoup (beautifulsoup4-4.3.2.tar.gz)
- 解压缩mechanize-0.2.5.zip 到C:\mechanize-0.2.5,打开命令行(Windows键+R键,输入cmd,回车),分别执行以下两条命令
cd C:\mechanize-0.2.5
C:\Python27\python setup.py install - 解压缩beautifulsoup4-4.3.2.tar.gz 到C:\beautifulsoup4-4.3.2,打开命令行,执行命令
cd C:\beautifulsoup4-4.3.2
C:\Python27\python setup.py install - 拷贝下面代码,保存到任意目录(如:C:\picture\meizitu_spider.py)
- 打开命令行,执行命令
cd C:\picture
C:\Python27\python meizitu_spider.py - 查看文件夹 C:\picture\MeiziTu
- Enjoy :-)
代码:
#!/usr/local/bin/python
# -*-coding=utf-8-*-
# Filename: meizitu_spider.py import os
import mechanize
from bs4 import BeautifulSoup br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1")]
#br.set_proxies({"http": "proxy.host.com:port"}) def parse_url(url):
br.open(url)
response = br.response()
soup = BeautifulSoup(response.read(), from_encoding='gb18030') return soup def find_next_page(soup):
page_nums = soup.find('div', id='wp_page_numbers').find_all('li');
next_page_wrapper = page_nums[-2] return next_page_wrapper.find('a') host = "http://www.meizitu.com/"
next_page_uri = '' page_count = 1
parent_folder = 'MeiZiTu'
if(not(os.path.exists(parent_folder))):
os.mkdir(parent_folder) while True:
print 'Start to parse PAGE %d' %page_count soup = parse_url(host + 'a/' + next_page_uri)
next_page = find_next_page(soup) if next_page == None:
break next_page_uri = next_page.get('href') for pic_link_wrapper in soup.find_all('div', attrs={'class':'metaRight'}):
pic_link = pic_link_wrapper.find('a')
album_soup = parse_url(pic_link.get('href'))
album_name = os.path.join(parent_folder, pic_link.get_text())
if(os.path.exists(album_name)):
continue os.mkdir(album_name) for img in album_soup.find('div', id='picture').find_all('img'):
img_src = img.get('src')
img_name = img_src[img_src.rindex('/')+1:]
picture_data = mechanize.urlopen(img_src) with open(os.path.join(album_name, img_name), 'wb') as picture:
picture.write(picture_data.read()) page_count += 1
宅男福利--利用Python简单爬图的更多相关文章
- Python多线程爬图&Scrapy框架爬图
一.背景 对于日常Python爬虫由于效率问题,本次测试使用多线程和Scrapy框架来实现抓取斗图啦表情.由于IO操作不使用CPU,对于IO密集(磁盘IO/网络IO/人机交互IO)型适合用多线程,对于 ...
- python 简单爬取今日头条热点新闻(一)
今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...
- Python简单爬取Amazon图片-其他网站相应修改链接和正则
简单爬取Amazon图片信息 这是一个简单的模板,如果需要爬取其他网站图片信息,更改URL和正则表达式即可 1 import requests 2 import re 3 import os 4 de ...
- 爬虫实战【5】送福利!Python获取妹子图上的内容
[插入图片,妹子图首页] 哈,只敢放到这个地步了. 今天给直男们送点福利,通过今天的代码,可以把你的硬盘装的满满的~ 下面就开始咯! 第一步:如何获取一张图片 假如我们知道某张图片的url,如何获取到 ...
- 利用python进行折线图,直方图和饼图的绘制
我用10个国家某年的GDP来绘图,数据如下: labels = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', ...
- 一、python简单爬取静态网页
一.简单爬虫框架 简单爬虫框架由四个部分组成:URL管理器.网页下载器.网页解析器.调度器,还有应用这一部分,应用主要是NLP配合相关业务. 它的基本逻辑是这样的:给定一个要访问的URL,获取这个ht ...
- 如何利用python爬虫爬取爱奇艺VIP电影?
环境:windows python3.7 思路: 1.先选取你要爬取的电影 2.用vip解析工具解析,获取地址 3.写好脚本,下载片断 4.将片断利用电脑合成 需要的python模块: ##第一 ...
- Python简单爬取图书信息及入库
课堂上老师布置了一个作业,如下图所示: 就是简单写一个借书系统. 大概想了一下流程,登录-->验证登录信息-->登录成功跳转借书界面-->可查看自己的借阅书籍以及数量... 登录可以 ...
- 利用Python爬虫爬取淘宝商品做数据挖掘分析实战篇,超详细教程
项目内容 本案例选择>> 商品类目:沙发: 数量:共100页 4400个商品: 筛选条件:天猫.销量从高到低.价格500元以上. 项目目的 1. 对商品标题进行文本分析 词云可视化 2. ...
随机推荐
- [Effective C++ --024]若所有参数皆需类型转换,请为此采用non-member函数
引言 假设我们有这样的类: class A{ public: A(, ) {}; int num() const; int den() const; const A operator* (const ...
- 文件I/O之sync、fsync和fdatasync函数
传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行.当将数据写入文件时,内核通常先将数据复制到其中一个缓冲区中,如果 该缓冲区尚未写满,则并不将其排入输出队列, ...
- 文件I/O(不带缓冲)之read函数
调用read函数从打开文件中读数据. #include <unistd.h> ssize_t read( int filedes, void *buf, size_t nbytest ); ...
- Understanding transient variables in Java and how they are practically used in HashMap---reference
What is the significance of the transient keyword in Java? If you know the answer, good! you are a p ...
- marine
- c++ 拷贝构造练习
#include<iostream> using namespace std; class Vector { private: int *dwp; int size; void clone ...
- XML前言
一.前言 1.XML全称"eXtensible Markup Language"(可扩展的标记语言) 2.DTD全称"Document Type Defintion&qu ...
- dedecms 知识点总结
生成-更新主页html 将自定义字段在arclist调用: 内容模型管理==>频道模型管理==>增加新字段==>列表处理: 使字段可以在列表的底层模板中获得(自定义字段默认仅能 ...
- 阻止子View获取焦点方法
android:descendantFocusability:ViewGroup ep: android:descendantFocusability=blocksDescendants
- NPOI操作EXCEL 类代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...