从零开始学Python 三(网络爬虫)
本章由网络爬虫的编写来学习python。首先写几行代码抓取百度首页,提提精神,代码如下:
import urllib.request
file=urllib.request.urlopen("http://www.baidu.com")
data=file.read()
handle=open("code/python/baidu.html","wb")
handle.write(data)
handle.close()
除了第一行导入第三方包之外,我们用5行代码实现了一个简单的程序:读取百度首页并存储在本地制定文件。下面来详细介绍代码:
1.import urllib.request
urllib库是python的一个操作url功能强大的库,经常用在爬虫程序中。使用上述代码,我们便可以在程序中打开并爬取网页。
2.urllib.request.urlopen("http://www.baidu.com")
使用urlopen方法,参数为想爬取的网页。成功之后,把爬取的内容赋值给file变量。
另,读取file数据有2种方法:
file.read() //读取全部数据
file.readline()//读取一行数据
3.handle=open("code/python/baidu.html","wb")
通过open函数打开一个文件,并且以“wb”即二进制写入方式打开,然后赋值给hadle变量。需要注意首先建立对应的文件夹和文件,否则无法运行。错误如下:
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
fhandle=open("/code/python","wb")
FileNotFoundError: [Errno 2] No such file or directory:
4.handle.write(data)
使用write()方法将data数据写入文件
5.handle.close()
关闭文件。操作完文件之后一定要记得关闭。至此,我们就把百度首页保存到了本地文件:

打开文件显示如下:

其实,上面5行代码可以精简为1行,功能不变但代码更少:
>>> import urllib.request
>>>
>>> urllib.request.urlretrieve("http://www.baidu.com","code/python/baidu2.html")
('code/python/baidu2.html', <http.client.HTTPMessage object at 0x1060f8240>)
>>>
接着,让我们更进一步,用程序模拟百度搜索操作。
当我们在百度上查询时,是在输入框中输入关键字,然后点击回车,接着百度返回搜索结果。这一系列操作通过http语音描述如下:使用get方法,通过"http://www.baidu.com/s?wd="+关键字调用百度服务。明白背后原理之后,我们用python模拟搜索“逃税”的操作,代码如下:
>>> url="http://www.baidu.com/s?wd="
>>> key="逃税"
>>> key_code=urllib.request.quote(key)
>>> urllib.request.urlretrieve(url+key_code,"code/python/baidu逃税.html")
('code/python/baidu逃税.html', <http.client.HTTPMessage object at 0x1060f8f98>)
打开本地文件后,发现和在百度上输入一模一样。
上面代码有个关键点:URL标准中只允许一部分ASCII字符(字母、数字),其他的比如汉字不符合标准。因此不能直接在url后面拼接汉字,需要使用quote()方法进行编码。相应的,如果需要对编码的网址进行解码,可以使用unquote()方法。
最后,以一个不完整的图片爬虫程序结束。
现在,我们想把淘宝网上连衣裙分类里的图片全部下载到本地。首先,找到目标网址(https://s.taobao.com/list?spm=a217f.8051907.312003.5.19833308A93qss&q=%E8%BF%9E%E8%A1%A3%E8%A3%99&cat=16&seller_type=taobao&oetag=6745&source=qiangdiao&bcoffset=12&s=180)。打开开发者工具,查看图片地址。

可以看到,我们已经拿到了图片路径,在浏览器上加上前缀"http://"就可以打开。
因此,程序逻辑如下:
循环获取网址内容->对于每个网址找到需要的图片->构造图片路径,下载到本地
具体代码请等下期内容。
从零开始学Python 三(网络爬虫)的更多相关文章
- 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘
百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...
- Python 3网络爬虫开发实战中文 书籍软件包(原创)
Python 3网络爬虫开发实战中文 书籍软件包(原创) 本书书籍软件包为本人原创,想学爬虫的朋友你们的福利来了.软件包包含了该书籍所需的所有软件. 因为软件导致这个文件比较大,所以百度网盘没有加速的 ...
- Python 3网络爬虫开发实战书籍
Python 3网络爬虫开发实战书籍,教你学会如何用Python 3开发爬虫 本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib.reques ...
- 读书笔记汇总 --- 用Python写网络爬虫
本系列记录并分享:学习利用Python写网络爬虫的过程. 书目信息 Link 书名: 用Python写网络爬虫 作者: [澳]理查德 劳森(Richard Lawson) 原版名称: web scra ...
- Python即时网络爬虫项目启动说明
作为酷爱编程的老程序员,实在按耐不下这个冲动,Python真的是太火了,不断撩拨我的心. 我是对Python存有戒备之心的,想当年我基于Drupal做的系统,使用php语言,当语言升级了,推翻了老版本 ...
- Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)
1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...
- Python即时网络爬虫项目: 内容提取器的定义
1. 项目背景 在python 即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间,从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端的数据处理工作 ...
- Python即时网络爬虫:API说明
API说明——下载gsExtractor内容提取器 1,接口名称 下载内容提取器 2,接口说明 如果您想编写一个网络爬虫程序,您会发现大部分时间耗费在调测网页内容提取规则上,不讲正则表达式的语法如何怪 ...
- Python学习网络爬虫--转
原文地址:https://github.com/lining0806/PythonSpiderNotes Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scra ...
随机推荐
- laravel-admin 上传图片过程中遇到的问题
1. 报错 Disk [admin] not configured, please add a disk config in `config/filesystems.php`. 在config/fil ...
- 解析url成对象形式
请编写一个JavaScript函数parseQueryString,他的用途是把URL参数解析为一个对象 var url = "https://www.baidu.com/s?ie=utf- ...
- ROS机器人编程实践----琐碎知识点
amcl原理: amcl将激光传感器数据与从地图预估的传感器数据相比较,给出可能的位姿.如果传感器数据和某个候选位姿处的预测数据相同,amcl就会给这个位姿一个较高的概率,反之,就会降低这个概率.概率 ...
- 【ubuntu】-桌面假死的解决办法
第一,通过ctrl+art+F1(1-6),启动本地终端 切换到了字符界面tty1 第二,查询进程,ps -e |grep tty7 得到tty7的pid号 第三,杀死tty7的进程 , kill 9 ...
- mysqldiff差异比较
1.安装mysql-utilities[root@localhost soft]# yum install mysql-utilities.noarch 2.比较数据库zentao和数据库db_ze ...
- [Python数据挖掘]第8章、中医证型关联规则挖掘
一.背景和挖掘目标 二.分析方法与过程 1.数据获取 2.数据预处理 1.筛选有效问卷(根据表8-6的标准) 共发放1253份问卷,其中有效问卷数为930 2.属性规约 3.数据变换 ''' 聚类 ...
- opencv学习之路(40)、人脸识别算法——EigenFace、FisherFace、LBPH
一.人脸识别算法之特征脸方法(Eigenface) 1.原理介绍及数据收集 特征脸方法主要是基于PCA降维实现. 详细介绍和主要思想可以参考 http://blog.csdn.net/u0100066 ...
- 基于OpenCV做“三维重建”(3)--相机参数矩阵
通过前面的相机标定,我们能够获得一些参数模型.但是这些相机的参数矩阵到底是什么意思?怎样才能够判断是否正确?误差都会来自哪里?这里就必须要通过具体实验来加深认识.采集带相机参数的图片具有一定难度,幸好 ...
- iperf详细使用方法
Iperf 是一个网络性能测试工具.Iperf可以测试TCP和UDP带宽质量.Iperf可以测量最大TCP带宽, 具有多种参数和UDP特性.Iperf可以报告带宽,延迟抖动和数据包丢失. Iperf ...
- kNN算法基本原理与Python代码实践
kNN是一种常见的监督学习方法.工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k ...