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抓取数据的更多相关文章

  1. python抓取数据,python使用socks代理抓取数据

    在python中,正常的抓取数据直接使用urllib2 这个模块: import urllib2 url = 'http://fanyi.baidu.com/' stream = urllib2.ur ...

  2. python抓取数据构建词云

    1.词云图 词云图,也叫文字云,是对文本中出现频率较高的"关键词"予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 先看几个词 ...

  3. python抓取数据 常见反爬虫 情况

    1.报文头信息: User-Agent Accept-Language  防盗链 上referer 随机生成不同的User-Agent构造报头 2.加抓取等待时间 每抓取一页都让它随机休息几秒,加入此 ...

  4. MAC下使用Charles抓取安卓模拟器数据

    一.安装Charles,这个不多记录 二.Charles数据乱码问题(参照这篇文章 http://blog.csdn.net/huanghanqian/article/details/52973651 ...

  5. python 抓取数据,pandas进行数据分析并可视化展示

    感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...

  6. python 抓取数据 存入 excel

    import requestsimport datetimefrom random import choicefrom time import timefrom openpyxl import loa ...

  7. 使用python抓取数据之菜鸟爬虫1

    ''' Created on 2018-5-27 @author: yaoshuangqi ''' #本代码获取百度乐彩网站上的信息,只获取最近100期的双色球 import urllib.reque ...

  8. Python 抓取数据存储到Mysql中

    # -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb #连接MY ...

  9. Python 抓取数据存储到Redis中

    redis是一个key-value存储结构.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

随机推荐

  1. F. Relatively Prime Powers (求([2,n],内不是次方的数量)

    题目:经过提炼后, 题目的意思就是问[2,n] 内,不是次方数的数量 ,: 思路: 答案就是 原理是利用容斥,注意n开i次根是向下取整(这题巨卡精度) 这是大神的思路 ,, 我还没有理解, 先放着,等 ...

  2. P2161 [SHOI2009]会场预约 (线段树:线段树上的不重复覆盖数)

    题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...

  3. bitnami-redmine Apache服务启动不起来

    方法一: 通过 netstat -a -o 查看端口占用情况,关闭调用相关端口的进程.  c:\> netstat -a -o  Active Connections  Proto  Local ...

  4. @async 方法上添加该注解实现异步调用的原理

    在我们使用spring框架的过程中,在很多时候我们会使用@async注解来异步执行某一些方法,提高系统的执行效率.今天我们来探讨下 spring 是如何完成这个功能的. spring 在扫描bean的 ...

  5. 简单的dp(dp专题)

    题目链接:https://vjudge.net/contest/216347#problem/C   Alice gets two sequences A and B. A easy problem ...

  6. (转)Linux命令详解-file

    Linux命令详解-file 原文:https://www.cnblogs.com/Dodge/p/4278306.html file命令用来识别文件类型,也可用来辨别一些文件的编码格式.它是通过查看 ...

  7. winform-Chrome-CefSharp库

    相关资源 教程地址:Winform下CefSharp的引用.配置.实例与报错排除 支持html5:http://www.html5tricks.com/demo/html5-css3-windmill ...

  8. (三)Redis两种持久化方案

    Redis的持久化策略:2种 RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.RDB是Redis默认采用的持久化方 ...

  9. UVALive 4261——Trip Planning——————【dp+打印路径】

    Trip Planning Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Stat ...

  10. Java中的continue语句——通过示例学习Java编程(12)

    作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=23 continue语句主要是用在循环代码块中.当 ...