在mac下使用python抓取数据
2015已经过去,这是2016的第一篇博文!
祝大家新年快乐!
但是我还有好多期末考试!
还没开始复习,唉,一把辛酸泪!
最近看了一遍彦祖的文章叫做
iOS程序员如何使用Python写网路爬虫
所以自己也想小试牛刀.于是便开始动手写,但初次接触,还是遇见了很多不懂的东西,于是爬文一个一个解决了,最终抓取了自己想要的东西
彦祖的这篇文章里Python代码格式有错,但是解释是没错的!所以我待会儿贴出我能正确运行的代码
彦祖的文章里说可以直接用类似于cocoapods的Python库管理工具pip进行安装我们解析网页所需要用的第三方库BeautifulSoup!
Mac确实是自带了Python.但是并没有安装pip,所以需要我们手动进行安装!
有人说可以使用命令:easy_install pip进行安装,但是我并没有安装成功!百思不得其解
于是爬文寻找其他方法:http://stackoverflow.com/questions/17271319/installing-pip-on-mac-os-x
原来是需要我的超级管理员权限...
至此,安装Pip成功
- 第二步:安装BeautifulSoup!
用彦祖的命令去运行,结果报错!提示我安装失败!(又忘了截图..)
没办法,就尝试手动安装BeautifulSoup,结果还是不行
后来我想是不是还是因为没有管理员权限的原因
于是尝试加上过后,就安装成功了
好了,开始写代码吧,但是我一个新人连该用什么来写Python代码都不知道!
又搜!(好低级的问题)=====>用记事本就行(真方便)(保存为.py文件后,是用的xcode打开的)
于是敲了如下代码:
#!/usr/bin/python
#-*- coding: utf-8 -*-
#encoding=utf-8 import urllib2
import urllib
import os
from BeautifulSoup import BeautifulSoup
def getAllImageLink():
html = urllib2.urlopen('http://www.dbmeinv.com').read()
soup = BeautifulSoup(html) liResult = soup.findAll('li',attrs={"class":"span3"}) for li in liResult:
imageEntityArray = li.findAll('img')
for image in imageEntityArray:
link = image.get('src')
imageName = image.get('title')
filesavepath = '/Users/WayneLiu_Mac/Desktop/meizi/%s.png' % imageName
urllib.urlretrieve(link,filesavepath)
print filesavepath if __name__ == '__main__':
getAllImageLink()
获得了如下数据(彦祖好邪恶....):

其实python真的很强大的,短短数几十行代码就可以实现这些功能!
闲来无事,又完善了一下代码,用以获得所有妹子的照片...
#!/usr/bin/python
#-*- coding: utf-8 -*-
#encoding=utf-8 import urllib2
import urllib
import os
import socket
from BeautifulSoup import BeautifulSoup def getAllImageLink():
xiayiye = True
page = '/?pager_offset=12'
while(1):
html = urllib2.urlopen('http://www.dbmeinv.com%s' % page).read()
soup = BeautifulSoup(html) liResult = soup.findAll('li',attrs={"class":"span3"})
nextResult = soup.findAll('li',attrs={"class":"next next_page"}) for li in liResult:
imageEntityArray = li.findAll('img')
nameResult = li.findAll('span',attrs={"class":"starcount"})
for name in nameResult:
nameTitle = name.get('topic-image-id') for image in imageEntityArray:
link = image.get('src')
filesavepath = '/Users/WayneLiu_Mac/Desktop/meizi2/%s.jpg' % nameTitle
socket.setdefaulttimeout(30)
urllib.urlretrieve(link,filesavepath)
print filesavepath for nextPage in nextResult:
aEntityArray = nextPage.findAll('a')
for a in aEntityArray:
nextTitle = a.get('title')
print nextTitle
page = a.get('href')
print page
if nextTitle.encode('utf-8') != "下一页":
xiayiye = False
print xiayiye
if xiayiye == False:
break if __name__ == '__main__':
getAllImageLink()
呵呵哒...

在mac下使用python抓取数据的更多相关文章
- python抓取数据,python使用socks代理抓取数据
在python中,正常的抓取数据直接使用urllib2 这个模块: import urllib2 url = 'http://fanyi.baidu.com/' stream = urllib2.ur ...
- python抓取数据构建词云
1.词云图 词云图,也叫文字云,是对文本中出现频率较高的"关键词"予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 先看几个词 ...
- python抓取数据 常见反爬虫 情况
1.报文头信息: User-Agent Accept-Language 防盗链 上referer 随机生成不同的User-Agent构造报头 2.加抓取等待时间 每抓取一页都让它随机休息几秒,加入此 ...
- MAC下使用Charles抓取安卓模拟器数据
一.安装Charles,这个不多记录 二.Charles数据乱码问题(参照这篇文章 http://blog.csdn.net/huanghanqian/article/details/52973651 ...
- python 抓取数据,pandas进行数据分析并可视化展示
感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...
- python 抓取数据 存入 excel
import requestsimport datetimefrom random import choicefrom time import timefrom openpyxl import loa ...
- 使用python抓取数据之菜鸟爬虫1
''' Created on 2018-5-27 @author: yaoshuangqi ''' #本代码获取百度乐彩网站上的信息,只获取最近100期的双色球 import urllib.reque ...
- Python 抓取数据存储到Mysql中
# -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb #连接MY ...
- Python 抓取数据存储到Redis中
redis是一个key-value存储结构.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...
随机推荐
- matplotlib 知识点11:绘制饼图(pie 函数精讲)
饼图英文学名为Sector Graph,又名Pie Graph.常用于统计学模块. 画饼图用到的方法为:matplotlib.pyplot.pie( ) #!/usr/bin/env python # ...
- 练习三十八:矩阵for循环应用
习题如下: 求一个3*3矩阵对角线元素之和 利用for循环控制输出二维数组,再将a[i][j]累加后输出 a = [] sum1 = 0.0 for i in range(3): a.append([ ...
- svn常用功能使用简介
1.文档库地址: https://xxx.xxx.xxx.xxx/svn/ 2.svn添加文件 2.1 在本地电脑上任何空白地方,右键-->打开“浏览版本库(Repo-browser)”,如图: ...
- 【ACM】大数阶乘 - Java BigInteger实现
大数阶乘 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数 ...
- malloc内存申请--释放-收缩
一.验证思路和代码 #include <stdio.h> #include <unistd.h> #include <malloc.h> #include < ...
- ElasticSearch 全文检索— ElasticSearch 基本操作
REST 简介-定义 REST (REpresentation State Transfer)描述了一个架构样式的网络系统,比如 web 应用程序.它首次出现在 2000 年 Roy Fielding ...
- Storm概念学习系列 之数据流模型、Storm数据流模型
不多说,直接上干货! 数据流模型 数据流模型是由数据流.数据处理任务.数据节点.数据处理任务实例等构成的一种数据模型.本节将介绍的数据流模型如图1所示. 分布式流处理系统由多个数据处理节点(node) ...
- 分布式锁-session-事务相关
1. 分布式锁--zookeeper 1). client调用create()方法创建"/root/lock_"节点,注意节点类型是EPHEMERAL_SEQUENTIAL. 2) ...
- 关于PCA降维中遇到的python问题小结
由于论文需要,开始逐渐的学习CNN关于文本抽取的问题,由于语言功底不好,所以在学习中难免会有很多函数不会用的情况..... ̄へ ̄ 主要是我自己的原因,但是我更多的把语言当成是一个工具,需要的时候查找就 ...
- android 开发AlertDialog.builder对话框的实现
AndroidAPI提供了Dialog对话框控件,但google明确指出不建议开发者只是使用Dialog来创建对话框,而应该自定义对话框或者使用API中提供的Dialog的子类,如AlertDialo ...