requests模块基本使用、代理ip、session访问

python原生基于网络请求的模块,比urllib更实用

相比urllib优势

  • 自动处理编码
  • 自动处理post请求参数、并转码
  • 简化cookie和代理操作

安装使用

pip install requests

代理IP

http://www.goubanjia.com/

注意!! 代理如果代理ip为http协议 那么post协议也统一http


get与post参数

请求类型 参数1 参数2 *参数 代理ip
GET url params拼接内容 headers请求头
POST url data内容 headers请求头 proxies

响应体response常用属性

语法 作用
response.content 取二进制byte类型的页面
response.status_code 获取响应状态码
response.headers 取响应
response.url 取url

GET案例

抓取豆瓣电影信息

import requests

url = 'https://movie.douban.com/j/chart/top_list?'
# get参数拼装
params = {
    'type': '11',
    'interval_id': '100:90',
    'action': '',
    'start': '20',
    'limit': '20',
}
# 自定义请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}

response = requests.get(url=url, params=params, headers=headers)
data = response.text

with open('./测试.html', 'w', encoding='utf-8') as f:
    f.write(data)

POST案例

取肯德基全国店地址 代理ip

import requests

url = 'http://www.kfc.com.cn/kfccda/storelist/index.aspx'

data = {
    'cname':'',
    'pid':'',
    'keyword': '重庆',
    'pageIndex': '1',
    'pageSize': '10',
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}

# 代理ip
proxies = {
    'http': '129.28.66.50:80',
}

response = requests.post(url=url, data=data, proxies=proxies, headers=headers)
print(response.text)

综合案例

爬搜狗搜查询页面指定页数内容

import requests
import os

# 创建储存文件夹
if not os.path.exists('./pages'):
    os.mkdir('./pages')
    
word = input('输入要搜索的词条')
start_page = int(input('起始页码'))
end_page = int(input('结束页码'))

url = 'https://zhihu.sogou.com/zhihu'
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}
for i in range(start_page, end_page+1):
    params = {
        'query': word,
        'ie': 'utf8',
        'sut': '630',
        'lkt': '0,0,0',
        'sst0': '1542108506930',
        'page': i,
    }
    start_page += start_page
    response = requests.get(url=url, params=params, headers=headers)

    fileName = word+str(i)+'.html'
    filePath = 'pages/' + fileName
    with open(filePath, 'w', encoding='utf-8') as f:
        f.write(response.text)
        print('文件%s写入成功' % fileName)

带cookie的访问

session对象:发送请求(会将cookie对象自动存储)

如果请求服务器返回cookie那么session请求会自动储存cookie,并且再次用session访问时会携带cookie

扫描二维码关注公众号,回复: 4109230 查看本文章
import requests

login_url = 'https://accounts.douban.com/login'
ata = {
    'redir': 'https://www.douban.com/',
    'form_email': '[email protected]',
}

# 1.创建session对象储存cookie
session = requests.session()
# 2.使用session发起登录请求,主要想要cookie 和session
login_response = session.post(url=login_url, data=data, headers=headers)
# 3.对个人主页发起请求(含session)
url = 'https://www.douban.com/people/187254609/'
response = session.get(url=url, headers=headers)
data = response.text

猜你喜欢

转载自blog.csdn.net/weixin_42329277/article/details/84038877
今日推荐