iOS开发假如之前没接触过除了c和c++(c++太难了,不花个十来年根本不可能通晓)的言语,第二门言语最好的选择就是Python.缘由就是

1.语法简单

2.库太多,随便想要什么功能的库都找得到,简直编程界的哆啦A梦.

3.语法优美,不信?你去看看python超过两千行的代码再回头看看用oc写的超过两千行的代码,oc写的简直丑到极致(没命名空间,点语法调用和括号调用混用).

你如果想自己弄个app,例如每日精选美女之类的app,你服务端总得有图吧,怎么弄?自己用爬虫爬啊,爬到链接了塞到数据库里,传个json,app直接sdwebimage就好了.多爽!

废话不多说.开始写.

我先假设你用的是Mac,然后Mac都预装了python2.x,然后呢,你有了python没用,你得有库.没库怎么干活?怎么安装库呢?

python界也有个类似于我们iOS开发里cocoapods的东西,这个东西叫做pip.

pip和cocoapods用起来的命令都极其类似,我们只需要两个库,一个叫做urllib2,一个叫做Beautifulsoup.

urllib2是干什么的呢?它的作用就是把网页down下来,然后你就可以分析网页了.

Beautifulsoup干什么的呢?你用urllib2把网页down下来了之后,里面都是html+css什么的,你想要从乱七八糟的一堆html里面找到正确的图片链接那可不是件简单的事,据我这几天的学习,做法无非两个,一个是自己写正则表达式然后用一个叫re的python库,另一个是使用lxml解析xpath.这两个说实话都不太好用,一个正则就够你吃一壶的.后来我搜索了很久,发现了一个库叫做Beautifulsoup,用这个库解析html超级好用.

首先配置python环境,安装pip:

然后你们打开terminal敲入下面这个命令.

然后就会自动帮你安装BeautifulSoup这个东西了.urllib2因为是自带的,所以不用你下载了.

好的我们随意打开网页http://www.pcpop.com/doc/1/1279/1279531.shtml,直接右键打开源文件.

你看到的是这些东西.

图片链接就在li这个标签下地img标签里.现在我们需要做的就是尝试着把这种类型的li从所有html中分离出来.我们可以看到li这个标签有个属性叫做class,这个属性的值是class=”span3”,我们把这段话li class=”span3”

搜索一下,我们发现有20个结果.恰巧,我们这个页面的图片也只有20个,那么可以确定的是我们找到了区别于其他标签的唯一性.

再仔细分析下,img这个标签在li这个标签里有且只有一个.那么,也就是说,我们先搜索出所有符合条件的li标签,然后找到里面的img标签就可以找到所有的图片链接了.

然后看代码.

我们来一句一句分析下.其实python的语法超级简单.

凡是#打头的就是python里面的注释语句类似于oc里的//.

分别说明我们的环境是python,编码是utf-8

然后import了四个库,分别是urllib2,urllib,os,和Beautifulsoup库.

导入Beautifulsoup库的方式和其他三个不太一样.我暂时也不清楚为什么python用这种导入方式,不过照猫画虎就行了.

然后def打头的就是定义一个函数,python里面是不用分号做句与句的分隔符的.他用缩进来表示.与def缩进一个tab的都是函数体.

html = urllib2.urlopen('http://www.pcpop.com/doc/1/1279/1279531.shtml').read()

这句很简单,就是读取网页的html.然后把值赋给html这个变量.python里声明变量前面不用加任何东西,不用加声明语句和变量类型,就连JavaScript声明变量还要加个var呢.

我们获取了网页的html之后呢,声明了一个Beautifulsoup变量soup,用来准备解析html.

liResult = soup.findAll('img',attrs={“width”:”175″})

这句话的意思就是,寻找html中所有img标签,并且这个img标签有个属性width,width的值是175.

注意这个findAll函数,有点常识的话你应该清楚,凡是带all的函数基本上返回的都是一个数组,所以我们liResult这个变量实际上是一个数组.

for image in liResult:

这句话基本和oc里的遍历数组语法完全一样.就是遍历liResult里的每一个变量.那么每一个变量就是一个标签.

link = image.get('src')

这句的意思就是,获取img标签里的src属性,src就是我们最想要的图片链接了.

这里定义了一个变量count = 0,然后在 for 循环里面做递加 count += 1,最终把这个值

赋给我们的变量imageName = count,以便后面使用。

这两句,第一句是设置一个文件存放地址,第二句用urllib这个库的urlretrieve这个方法下载我们的图片,并且把图片放到刚才的路径里.

好了,万事具备了,我们现在跑一下我们的脚本

好了,我们的图片就下载完了.

然后在看看下载的内容:

转载于:https://juejin.im/post/5c778864e51d4550690469b0

python的爬虫功能如何实现相关推荐

  1. python网络爬虫的基本步骤-详解Python网络爬虫功能的基本写法

    网络爬虫,即Web Spider,是一个很形象的名字.把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 1. 网络爬虫的定义 网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个 ...

  2. python简易爬虫课程设计_python实现简单爬虫功能的示例

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  3. python实现简单爬虫功能(网站图片)

    转自http://www.cnblogs.com/fnng/p/3576154.html 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸, ...

  4. python 爬虫程序示例,python实现简单爬虫功能的示例

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  5. python爬虫抓取文本_Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例...

    本文实例讲述了Python实现可获取网易页面所有文本信息的网易网络爬虫功能.分享给大家供大家参考,具体如下: #coding=utf-8 #------------------------------ ...

  6. python 小说爬虫_Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支 ...

  7. 有了代码怎么用python爬虫_python实现简单爬虫功能

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  8. python实现简单爬虫百度首页_python实现简单爬虫功能的示例

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  9. python爬取小说功能实现_Python实现的爬取小说爬虫功能示例

    本文实例讲述了Python实现的爬取小说爬虫功能.分享给大家供大家参考,具体如下: 想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取各个章节的内容,保存到txt文档中,支 ...

最新文章

  1. excel乘法公式怎么输入_Excel函数中的IF条件函数怎么用?四个IF函数公式带你轻松上手...
  2. XenDesktop7-基于SCVMM2012SP1的部署
  3. 【Scratch】青少年蓝桥杯_每日一题_3.23_骰子
  4. c++协程4 (boost::coroutine)
  5. jenkins配置记录(2)--代码发布流程
  6. 第二次Soring冲刺计划第一天(团队)
  7. python调用远程chromedriver.exe、selenium抓包方法
  8. 【英语】Invest in Yourself
  9. 解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found问题
  10. 842. 将数组拆分成斐波那契序列
  11. 易语言皮肤模块200个_S7200 SMART 模拟量模块种类amp;选型须知
  12. vue变量赋值到html,jsvue data变量相互赋值后被实时同步的解决步骤js大全-js开发...
  13. 安装MyBatis教程
  14. 零基础学SQL(三、MYSQL环境变量配置及启动)
  15. kali清理_linux下清理系统垃圾
  16. 光纤分布式声波传感DAS语音还原介绍
  17. RabbitMQ 实战教程
  18. 透过招股书看知乎的价值投资逻辑
  19. MatplotlibTutorial——Matplotlib的基本使用【Jupiter Notebook代码】
  20. 农业科普:智慧果园种植科研(二)

热门文章

  1. 二叉树层序遍历递归与非递归_二叉树的遍历「递归、非递归」以及自己的感受
  2. Python代码—测试
  3. java 手机视频_JAVA炫播手机视频
  4. 怎么配置服务器php环境,配置PHP服务器环境步骤详解
  5. 机器人编程软件semia_机器人10大流行编程语言对比 你掌握了哪种?
  6. 四川大学计算机组成原理实验报告_20092014年计算机组成原理考研真题与解析
  7. 路由器有一个android设备连接不上,Android http连接 – 多个设备无法连接同一台服务器...
  8. Android用按钮确定单选框,Android RadioButton单选框的使用方法
  9. java 水印 位置_Java实现图片加水印且控制位置和透明度
  10. 大数据学习笔记:HBase Shell操作