您的位置:首页 > 编程语言 > Python开发

python爬虫入门之requests

2018-01-23 20:45 309 查看

python爬虫(1):requests

requests入门

request是一种将http协议封装的非常好的包,非常适合各种网络编程

requests中文文档

http协议

所谓HTTP协议,中文名是超文本传输协议。这是一种可靠的可以把各种各样格式的文件在互联网上传输的协议。事实上HTTP协议总共有七步,这次我们先讲一下主要的过程。HTTP协议的传输主要通过HTTP报文实现的:

1. 客户端(比如浏览器) :发送请求报文到服务器

2. 服务器:接收请求报文并处理

3. 服务器:发送响应报文给客户端

4. 客户端:处理接收到的内容。

网页请求方法

爬虫一般请求的网页方法有get和post方法,post方法需要传递参数

get与post方法的区别

get方法通常用于访问

post一般用于访问需验证信息和登陆的网页,方便传参数

post比get方法更安全

### get一般用法
url = 'https://douban.zhihu.com'

#requests:
import requests
response=requests.get(url)
html=response.content

#session会话方式
session=requests.session()
response=session.get(url)
html=response.content

#urllib2:
#python2环境下运行

import urllib2
response = urllib2.urlopen(url)
content = response.read()

#Httplib2:
import httplib2
http = httplib2.Http()
response_headers, content = http.request(url, 'GET')


## post用法

import requests

### post参数
post_data={
'stock':'000001',
'searchkey':'',
'category':'category_ndbg_szsh;',
'pageNum':'1',
'pageSize':'',
'column':'szse_main',
'tabName':'fulltext',
'sortName':'',
'sortType':'',
'limit':'',
'seDate':''
}
r2 = requests.post('http://www.cninfo.com ,data=post_data)


requests返回的响应报文的状态

2开头的是正常

3开头的是重定向(重定向到另外一个URL)

4开头的是客户端异常,

5开头的是服务器异常。

响应内容

text\json()\content数据类型的区别

resp.text返回的是Unicode型的数据。

resp.content返回的是bytes型的数据.

resp.json()返回的是json格式数据.

也就是说,如果你想取文本,可以通过r.text。

如果想取图片,文件,则可以通过r.content。

小结:HTTP协议是一种在互联网上传输文件的协议,主要过程是客户端发送请求报文、服务器接收并发送响应报文、客户端接收;访问某个服务器资源需要知道它的URL;主要的HTTP请求方法有get(客户端不发数据)和post(客户端发数据)

import requests
r1 = requests.get('http://cn.bing.com/search?q=requests')  #get方法
html1=r1.text       #返回文本
html2=r1.content    #文件全文
html3=r1.json()     #返回JSON格式数据
#把请求回来的json数据转成Python字典并返回

r1.status_code      #状态码,正常是200
r1.encoding         #文件编码,比如'utf-8'


json介绍

json

伪造请求

requests官方文档

HTTP headers讲解

http头讲解

伪装成浏览器

有些网页的服务器会验证请求的发送者是否是真实的浏览器客户端,这时候需要伪装成浏览器访问。一般用headers头伪装

headers=[{'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'},\
{'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'},\
{'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'}]

url='http//www.baidu.com'
html=requests.get(url,headers=headers)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫