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是设置超时时间

第二和第三个参数在不传的情况下使用的是默认值Nonesocket._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地址包含三个部分:

  1. 协议:客户与服务器之间所使用的通信协议
  2. 主机标识:存放信息的服务器地址
  3. 文件名:存放信息的路径和文件名

    可以看到 http://tieba.baidu.com/f?kw=acm&fr=index就是一个典型的URL

    另外,还要清楚一个概念,URLURI的一个子集,URI包括了URLURN,如果你对概念有些模糊,参考 这里

4. GET 和 POST

在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GETPOST

  • 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说起的更多相关文章

  1. Python爬虫学习笔记-1.Urllib库

    urllib 是python内置的基本库,提供了一系列用于操作URL的功能,我们可以通过它来做一个简单的爬虫. 0X01 基本使用 简单的爬取一个页面: import urllib2 request ...

  2. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  3. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

  4. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  5. python爬虫学习笔记(一)——环境配置(windows系统)

    在进行python爬虫学习前,需要进行如下准备工作: python3+pip官方配置 1.Anaconda(推荐,包括python和相关库)   [推荐地址:清华镜像] https://mirrors ...

  6. [转]《Python爬虫学习系列教程》

    <Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...

  7. Python爬虫学习第一记 (翻译小助手)

    1 # Python爬虫学习第一记 8.24 (代码有点小,请放大看吧) 2 3 #实现有道翻译,模块一: $fanyi.py 4 5 import urllib.request 6 import u ...

  8. Python爬虫学习:四、headers和data的获取

    之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.c ...

  9. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

随机推荐

  1. [WCF编程]7.实例上下文模式

    一.实例上下文模式概述 实例上下文(IntanceContext Mode)表示服务端的服务实例与客户端的服务代理的绑定方式. 在实例化服务器对象时,WCF采用了3种不同的模式:单调(Per-Call ...

  2. luogg_java学习_13_GUI

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! GUI 容器 JFrame , JPanel , JS ...

  3. C标准头文件<stdlib.h>

    是个大杂烩,里面声明了从动态内存分配到常用算法等各种函数和宏 #数据类型 **size_t** **wchar_t** **div_t**是一个结构体类型,也是div()返回的类型 **ldiv_t* ...

  4. Linux 定时任务crontab

    crontab定时任务格式 1 * * * * * command 2 第1列表示分钟1-59 每分钟用*或者 */1表示 3 第2列表示小时1-23(0表示0点) 4 第3列表示日期1-31 5 第 ...

  5. 企业商务差旅信息化管理与移动App

    背景       某航空公司需要到北京某服务提供商公司学习交流,为了节省出行成本让出差员工乘坐公司运营航线,去程路途较远.需要在先乘飞机到天津机场,转地铁后,再乘动车到北京.回程时发生 后补机票失败, ...

  6. java中 try return finally return

    finally块里面的代码一般都是会执行的,除非执行 System.exit(int),停止虚拟机,断电. 1.若try代码块里面有return ,假设要return 的值 是A,A为基本类型或者被f ...

  7. MongoDB基础入门003--使用官方驱动操作mongo,C#

    本篇先简单介绍一下,使用官方驱动来操作MongoDB.至于MongoDB原生的增删改查语句,且等以后再慢慢学习. 一.操作MongoDB的驱动主要有两个 1.官方驱动:https://github.c ...

  8. MVC数据传递

    一.数据传递 1.ViewData[]: 用法:action中:ViewData["key"]="aaa";,V层接收ViewData["key&qu ...

  9. 两种文件上传的实现-Ajax和form+iframe

    前言 话说现在很多很多项目需要用到文件上传,自从有了HTML5之后,上传就变的超级简单了.HTML5支持多图片上传,而且支持ajax上传,而且支持上传之前图片的预览,而且支持图片拖拽上传,而且还是纯粹 ...

  10. 3D Banner(jQuery)

    1.这是用面向对象的思想去动态生成banner的简易流程,用到一个javaScript框架jQuer: 2.将代码黏贴成html文件,直接用浏览器打开即可: 3.layer属于弹窗提示类插件,可能需要 ...