资讯专栏INFORMATION COLUMN

【爬虫系列之二】python基础知识的了解

SHERlocked93 / 3166人阅读

摘要:数据传送上面介绍了参数,这里就是将需要的参数通过方式传入上述代码引入了库,现在我们模拟登陆京东商场,但是应该是无法登陆的,一般都是需要设置一些头部的工作,或者其它的参数,这里使用了库对参数,进行一下。

了解了 前面的环境搭建,以及python的基础知识的学习,咱们接下来学习一下,如何将网页扒下来

一、案例介绍

当我们打开浏览器,打开页面,看到的是好看的页面,但是其实是由浏览器解释才呈现的,实际上这好看的页面,是通过html,css,js组合形成的。

接下来,我们就写个小例子来扒下来网页(本篇文章,以python2.7为例子)

# coding:utf-8

import urllib2
response = urllib2.urlopen("http://music.163.com/")
print response.read()
二、分析案例的方法

然后让我们来分析一下上述例子的代码是干啥的

第一行:import urllib2

该行代码是通过import将python的urllib2库引入

第二行:response = urllib2.urlopen("http://music.163.com/")

这行代码是调用urllib2库中的urlopen方法,然后传入了一个网易云音乐的url地址,urlopen方法为
`urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT,

        cafile=None, capath=None, cadefault=False, context=None)`

其中第一个参数就是url,然后其它几个参数都是可以不传送的,其中第二个参数表示的访问该网址需要的传送的数据,第三个参数timeout表示的是过期时间,默认值是socket._GLOBAL_DEFAULT_TIMEOUT

第三行:print response.read()
其中response对象有一个read方法,可以返回获取到的页面内容,千万记得添加上read方法,不然会出现打印出来是对象。

三、Request的构造

将上述例子修改下,如下,其中urlopen是可以传入一个request请求,它是一个Request类的实例,构造的时候可以传入url,data,header等参数,它可以让我们构造一个request对象,在request请求中添加相关的header头文件。

# coding:utf-8

import urllib2

request = urllib2.Request("http://music.163.com/")
response = urllib2.urlopen(request)

print response.read()
四、POST和GET数据传送 GET 数据传送

GET方式我们可以直接把参数写到网址上面,直接构建一个带参数的URL出来即可。

import urllib
import urllib2

values = {}
values["wd"] = "zs"
data = urllib.urlencode(values)
url = "http://www.baidu.com/s" + "?" + data
request = urllib2.Request(url)
response = urllib2.urlopen(request)

print response.read()
POST 数据传送

上面介绍了data参数 ,这里就是将需要的参数 通过data方式传入

import urllib
import urllib2
 
values = {}
values["username"] = "1016903103@qq.com"
values["password"] = "XXXX"
data = urllib.urlencode(values) 
url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"
request = urllib2.Request(url,data)
response = urllib2.urlopen(request)
print response.read()

上述代码引入了urllib库,现在我们模拟登陆京东商场,但是应该是无法登陆的,一般都是需要设置一些头部header的工作,或者其它的参数,这里使用了urllib库对参数,进行urlencode一下。

五、设置headers

上面描述了一下,一般请求都需要带上各种header属性。
看下图,是京东的登陆页面,然后可以打开谷歌浏览器F12,然后可以看到请求,上面headers设置了挺多的参数,其中agent是请求的身份,还有refer,都是用来反盗链。看下面例子

import urllib  
import urllib2  
 
url = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F"
user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
refer ="https://www.jd.com/"
values = {"username" : "cqc",  "password" : "XXXX" }  
headers = { "User-Agent" : user_agent,"Refer":refer }  
data = urllib.urlencode(values)  
request = urllib2.Request(url, data, headers)  
response = urllib2.urlopen(request)  
page = response.read()

一般进行爬虫的时候,可以考虑检查浏览器的headers的内容

六、Proxy(代理)的设置

urllib2 默认会使用 http_proxy 来设置 HTTP Proxy。假如一个网站它会某一段时间某个IP 的访问次数,如果访问次数过多,它会禁止你的访问。所以你可以设置一些来帮助你做工作,每隔一段时间换一个代理,网站君都不知道是谁在捣鬼了,这酸爽!
下面一段代码说明设置方法

import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http" : "http://some-proxy.com:8080"})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
    opener = urllib2.build_opener(proxy_handler)
else:
    opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
七、使用 HTTP 的 PUT 和 DELETE 方法

下面的案例是用来多带带设置http的put和delete,请求

import urllib2
request = urllib2.Request(uri, data=data)
request.get_method = lambda: "PUT" # or "DELETE"
response = urllib2.urlopen(request)
推荐阅读:

【爬虫系列之一】爬虫开发环境的搭建

更多精彩内容,欢迎大家关注我的微信公众号:喝醉的清茶

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41855.html

相关文章

  • 爬虫系列之三】URLError异常处理以及Cookie使用

    摘要:一的处理出现产生的原因很多,比如网络没法连接,连接不到服务器,或者服务器不存在。二的使用,一般是某些网站为了辨别用户身份,进行跟踪,从而存储在客户端的数据。模块的主要作用是提供可存储的对象,以便于与模块配合使用来访问资源。 一、urlError的处理 出现urlError产生的原因很多,比如:网络没法连接,连接不到服务器,或者服务器不存在。在代码中,我们需要用try-except的语句...

    xiaochao 评论0 收藏0
  • 首次公开,整理12年积累博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • Python爬虫入门教程 7-100 蜂鸟网图片爬取之二

    摘要:蜂鸟网图片简介今天玩点新鲜的,使用一个新库,利用它提高咱爬虫的爬取速度。上下文不在提示,自行搜索相关资料即可创建一个对象,然后用该对象去打开网页。可以进行多项操作,比如等代码中等待网页数据返回创建线程,方法负责安排执行中的任务。 1. 蜂鸟网图片-简介 今天玩点新鲜的,使用一个新库 aiohttp ,利用它提高咱爬虫的爬取速度。 安装模块常规套路 pip install aiohtt...

    z2xy 评论0 收藏0
  • Python爬虫入门教程 7-100 蜂鸟网图片爬取之二

    摘要:蜂鸟网图片简介今天玩点新鲜的,使用一个新库,利用它提高咱爬虫的爬取速度。上下文不在提示,自行搜索相关资料即可创建一个对象,然后用该对象去打开网页。可以进行多项操作,比如等代码中等待网页数据返回创建线程,方法负责安排执行中的任务。 1. 蜂鸟网图片-简介 今天玩点新鲜的,使用一个新库 aiohttp ,利用它提高咱爬虫的爬取速度。 安装模块常规套路 pip install aiohtt...

    hufeng 评论0 收藏0
  • Python爬虫入门教程 7-100 蜂鸟网图片爬取之二

    摘要:蜂鸟网图片简介今天玩点新鲜的,使用一个新库,利用它提高咱爬虫的爬取速度。上下文不在提示,自行搜索相关资料即可创建一个对象,然后用该对象去打开网页。可以进行多项操作,比如等代码中等待网页数据返回创建线程,方法负责安排执行中的任务。 1. 蜂鸟网图片-简介 今天玩点新鲜的,使用一个新库 aiohttp ,利用它提高咱爬虫的爬取速度。 安装模块常规套路 pip install aiohtt...

    mcterry 评论0 收藏0

发表评论

0条评论

SHERlocked93

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<