爬虫之request模块高级

一、cookie&session

cookie:服务器端使用cookie来记录客户端的状态信息

实现流程:

  1. 执行登陆操作(获取cookie)
  2. 在发起个人主页请求时,需要将cookie携带到该请求中

注意:session对象也可以发送请求,并且会将cookie对象进行自动存储

cookie&session演示

import requests

session = requests.session()
# 1. 发起登陆请求:将cookie获取,且存储到session对象中
login_url = 'https://accounts.douban.com/login'
data = {
    'source':'None',
    'redir':'https://www.douban.com/people/141236419/',
    'form_email':'18931895326',
    'form_password':'lshhxr0418',
    'login':'登陆',
}

# 自定义请求头信息
headers =  {
     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}

# 使用session发起post请求
login_response = session.post(url=login_url,data=data,headers=headers)

# 2. 对个人主页发起请求(session),获取响应页面数据
url = 'https://www.douban.com/people/141236419/'
response = session.get(url=url,headers=headers)  
page_text = response.text

with open('./douban110.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

 

 

二、代理操作

  1. 第三方代理本体执行相关的事物。生活:代购、微商、中介

  2. 为什么要使用代理

    1. 反爬操作。

    2. 反反爬手段

  3. 分类

    1. 正向代理:代替客户端获取数据

    2. 反向代理:代理服务器端提供数据

  4. 免费代理ip的网站提供商

    1. www.goubanjia.com (建议使用)

    2. 快代理

    3. 西祠代理

 

代理演示

 

import requests

url = 'http://www.baidu.com/s?ie=utf-8&wd=ip'

# 将代理ip封装到字典
# 更换网络ip
proxy = {
    'http':'118.27.20.17:3128'
}

# 自定义请求头信息
headers =  {
     'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}

# 更换网络IP
response = requests.get(url=url,proxies=proxy,headers=headers)

with open('./daili.html','w',encoding='utf-8') as fp:
    fp.write(response.text)

 

posted @ 2019-04-03 11:04  梁少华  阅读(255)  评论(0编辑  收藏  举报