python爬虫学习笔记之网络请求

参考博客:python爬虫学习笔记_fdk少东家的博客-CSDN博客

'requests'

安装和文档地址:

利用pip进行安装:pip install requests

中文文档:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档

发送GET请求:

1.最简单的发送get请求就是通过requests.get来调用:

response = requests.get('http://www.baidu.com')

2.添加headers和查询参数:

如果想添加headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放入url中传递,可以利用params参数。示例代码如下:

import requests

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
data = {'wd':'中国'}
url = 'https://www.baidu.com/s'

response = requests.get(url,params=data,headers=headers)
# 查看响应内容,Unicode格式
print(response.text)
# 查看响应内容,字节流格式,可以使用decode进行编码
print(response.content)
# 查看完整的url地址
print(response.url)
# 查看响应头部字符编码
print(response.encoding)
# 查看响应的状态码
print(response.status_code)

发送POST请求:

1.最基本的POST请求可以使用post方法:

response = requests.get('https://www.baidu.com/s',data=data)

2.传入data数据:

这时候就不要在使用urlencode进行编码了,直接传入一个字典进去就可以了。如果返回的数据是json 类型的,可以按照字典的操作来进行提取数据。示例代码如下:

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    'Referer': 'https://www.lagou.com/jobs/list_python%E7%88%AC%E8%99%AB?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput='
}
data = {'first': 'true', 'pn': '1', 'kd': 'python爬虫'}
url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
response = requests.post(url, data=data, headers=headers)
json_str = response.json()
result = json_str['content']['positionResult']['result']
for i in result:
    # 输出公司名
    print(i['companyShortName'])
    # 输出城市名
    print(i['city'])
    print('*' * 20)

使用代理:

使用requests添加代理非常简单,只要在请求的方法中(比如getpost)传递proxies参数就可以了。示例代码如下:

import requests
url = 'http://httpbin.org/ip'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
proxy = {
    'http': '118.190.95.35:9001'
}
resp = requests.get(url,headers=headers,proxies=proxy)
print(resp.text)

cookie

如果在一个响应的包含了cookie,那么可以利用cookie属性拿到这个返回的cookie值:

import requests

resp = requests.get('http://www.baidu.com')
print(resp.cookies)
# 获取cookie的详细信息
print(resp.cookies.get_dict())

session

之前使用urllib库,是可以使用opener发送多个请求,多个请求之间是可以共享cookie的。那么如果要使用requests也要达到共享的cookie的目的,那么可以使用requests库提供的session对象。注意,这个session不是web开发中的session,这里只是一个会话对象而已。还是以登录人人网为例。示例代码如下:
 

import requests
url = 'http://renren.com/PLogin.do'
data = {'email':'人人邮箱账号','password':'密码'}
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
# 登录
session = requests.Session()
session.post(url,headers=headers,data=data)

# 访问大鹏个人中心
resp = session.get('http://www.renren.com/880151247/profile')

print(resp.text)

处理不信任的SSL证书:

对于那些已经被信任的SSL证书的网站,比如http://www.baidu.com/,那么使用requests直接就可以正常的返回响应。如果SSL证书不被信任,那么在请求网站的时候需要添加一个参数verify=False。示例代码如下:

resp = requests.get('http://www.12306.cn/mormhweb/',verify=False)
print(resp.content.decode('utf-8'))

你可能感兴趣的:(笔记,分类,爬虫,python)