python爬虫学习(1) —— 从urllib说起
0. 前言
如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力
因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫
所以建议先学习一下cuiqingcai
大神的 Python爬虫学习系列教程 的入门部分。
它的整个系列教程我觉得写得非常好,值得一看!
当然,即便是你什么都不会,也没关系。
只要有一颗上进的心,没什么是学不会的。
希望我的文章能给你些许帮助!
1. 扒下一个网页
什么都不讲,直接上一段代码
import urllib2
html = urllib2.urlopen( 'http://music.163.com/' )
print html.read()
我们将其保存为 test.py
, 通过 python test.py
运行该代码,可以看见终端下出现了网易云音乐主页的html
源代码,是的,我们把它扒下来了。
别急,我们把代码改一下
import urllib2
response = urllib2.urlopen( 'http://music.163.com/' )
html = response.read()
open( 'test.html',"w").write(html)
执行该代码后,当前目录下会出现一个 test.html
文件,是的,我们把网页保存下来了。
2. urllib2库
下面我们来分析一下上面的代码
首先,我们将urllib2
模块导入,以便后续使用
可以看到我们调用了一个名为urlopen()
的方法,它一般接受三个参数,方法执行后,返回一个response
对象,具体定义如下:
def urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
第一个参数url
即为网页的URL
第二个参数data
是访问URL时要传送的数据
第三个参数timeout
是设置超时时间
第二和第三个参数在不传的情况下使用的是默认值None
和socket._GLOBAL_DEFAULT_TIMEOUT
第一个参数url
是必须要传的,这里我们传的是网易云音乐的URL。
在我们获取到的页面信息,就存放在response
对象中,我们再通过调用read()
方法,它可以返回网页的内容。
最后,我们再使用文件读写操作,将页面内容保存在test.html
中,这样,我们就成功扒取了网易云音乐的主页内容。
3. URI 和 URL
首先你需要明白一个简单的问题,我们在浏览器地址栏一般值输入:www.baidu.com
但实际上,百度的URL应该是:https://www.baidu.com/
这就是我们所要理解的统一资源定位器URL
(Uniform Resoure Locator),基本的URL地址包含三个部分:
- 协议:客户与服务器之间所使用的通信协议
- 主机标识:存放信息的服务器地址
- 文件名:存放信息的路径和文件名
可以看到http://tieba.baidu.com/f?kw=acm&fr=index
就是一个典型的URL
另外,还要清楚一个概念,URL
是URI
的一个子集,URI
包括了URL
和URN
,如果你对概念有些模糊,参考 这里。
4. GET 和 POST
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET
和 POST
。
- GET 从指定的资源请求数据。
- POST 向指定的资源提交要被处理的数据
这两个请求方式很重要,你可以事先在度娘或者谷哥那里了解一下
简单来讲,可以这样理解:
get是从服务器上获取数据,post是向服务器传送数据
5. 必要的分析
想要爬取特定的信息或是数据,还需要对指定的网页进行分析,这也就涉及到了抓包工具以及正则表达式的使用,这些以后都会讲到。
6. 一个简短的例子
import urllib2
import re # 正则表达式所用到的库
# 我们所要下载的图片所在网址
url = 'http://desk.zol.com.cn/bizhi/6377_78500_2.html'
response = urllib2.urlopen(url)
# 获取网页内容
html = response.read()
# 确定一个正则表达式,用来找到图片的所在地址
reg = re.compile(r'<img id="bigImg" src="(.*?jpg)" .*>');
imgurl = reg.findall(html)[0]
# 打开图片并保存为haha.jpg
imgsrc = urllib2.urlopen(imgurl).read()
open("haha.jpg","w").write(imgsrc)
上面简短的代码片段,功能是下载ZOL桌面壁纸网站上某个指定图片。
其中用到了我们前面介绍的urlopen,open等方法,当然,还用到了一个和正则表达式有关的类库,你可以尝试着自己写一个demo,扒一下某个知名的或者不知名的网站。
这篇文章就到这里,以后的文章都以具体的例子展开,空讲理论不适合我。
Q: 如何入门爬虫?
A: 请直接上路!
python爬虫学习(1) —— 从urllib说起的更多相关文章
- Python爬虫学习笔记-1.Urllib库
urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...
- python爬虫学习 —— 总目录
开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...
- Python爬虫学习:三、爬虫的基本操作流程
本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...
- 《Python爬虫学习系列教程》学习笔记
http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...
- python爬虫学习笔记(一)——环境配置(windows系统)
在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库) [推荐地址:清华镜像] https://mirrors ...
- [转]《Python爬虫学习系列教程》
<Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...
- Python爬虫学习第一记 (翻译小助手)
1 # Python爬虫学习第一记 8.24 (代码有点小,请放大看吧) 2 3 #实现有道翻译,模块一: $fanyi.py 4 5 import urllib.request 6 import u ...
- Python爬虫学习:四、headers和data的获取
之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...
- Python爬虫学习:二、爬虫的初步尝试
我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...
随机推荐
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
[源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...
- [C#] .NET4.0中使用4.5中的 async/await 功能实现异
好东西需要分享 原文出自:http://www.itnose.net/detail/6091186.html 在.NET Framework 4.5中添加了新的异步操作库,但是在.NET Framew ...
- 深入理解和应用display属性(二)
四.inline-block 此类元素是inline + block的合体 1) margin和padding都有效:width和height都有效: .inline{ display: inline ...
- jquery固定在顶部的导航菜单
体验效果:http://hovertree.com/texiao/jquery/6.htm HTML文件代码: <!DOCTYPE html PUBLIC "-//W3C//DTD X ...
- CSS3文本溢出显示省略号
CCS3属性之text-overflow:ellipsis;的用法和注意之处 语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象 ...
- webpack初入
序言:前面已经倒腾了grunt.gulp.fis3,今天来通过一个例子玩玩webpack!最终预览 通过下面的例子,能够了解以下几点: 1.如何安装webpack 2.如何使用webpack 3.如何 ...
- easyui弹出层在最顶层显示跳出iframe框架通用javascript代码
有时候我们用easyui在后台框架中弹框的时候,总是显示在框架页面里面而不是整个系统框架的上面,看着有些不太乐意. dialog = function (opts) { var query = par ...
- 从FineReport看开放式引擎API
对于一款软件或产品,尤其是一些企业级应用的IT软件,是不可能满足所有需求的.尤其是针对业务化的产品需求,某些个性化的需求就要进行二次开发.二次开发需要API接口,无论是什么样的开发,开发人员都需要对开 ...
- iOS - 详细理解KVC与KVO
详细理解KVC与KVO 在面试的时候,KVC与KVO有些时候还是会问到的,并且他们都是Objective C的关键概念,在这里我们先做一个简单地介绍: (一)KVC: KVC即指:NSKeyValue ...
- 实用控件分享:自定义逼真相机光圈View
最近手机界开始流行双摄像头,大光圈功能也应用而生.所谓大光圈功能就是能够对照片进行后期重新对焦,其实现的原理主要是对拍照期间获取的深度图片与对焦无穷远的图像通过算法来实现重新对焦的效果. 在某双摄手机 ...