requests(爬虫常用)库的使用

news/2024/7/19 10:03:10 标签: 爬虫, json

Requests库的使用

基于urllib改写的库

示例:

import requests

response=requests.get('http://www.baidu.com')#get请求
print(response.status_code,response.url,response.cookies,response.text,sep='\n')
import requests
response=requests.post('http://httpbin.org/post')#post请求
print(response.text)#.text得到的都是字符串类型的值

带参数的get请求

import requests
data={
    'name':'abc',
    'age':15
}
response=requests.get('http://httpbin.org/get',params=data)#post的参数请求时data=data
print(response.text)

----------------------------------------------
#或者直接将参数拼接在url上
import requests response=requests.get('http://httpbin.org/get?name=adas&age=12') print(response.text)

将返回的结果变为json格式

import requests
import json
response=requests.get('http://httpbin.org/get')
print(response.json())
print(json.loads(response.text))#等价于上面的

获取二进制数据

1 import requests
2 response=requests.get('https://weibo.com/favicon.ico')
3 print(response.content)
4 with open('weibo.ico','wb')as f:
5     f.write(response.content)
View Code

添加http的headers属性

1 import requests
2 headers={
3 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
4 }
5 response=requests.get('https://zhihu.com/',headers=headers)
6 print(response.status_code)
7 print(response.text)
View Code

带参数的post请求

import requests
data={
    'name':'wang',
    'age':88
}
headers={
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36"
}
response=requests.post('http://httpbin.org/post',data=data,headers=headers)
print(response.text)

response的一些属性

1 import requests
2 response=requests.get('http://www.baidu.com')
3 print(response.headers)
4 print(response.text)
5 print(response.status_code)
6 print(response.content)
7 print(response.cookies)
8 #...还有就省略了
View Code

response状态码的判断

1 import requests
2 response=requests.get('http://www.baidu.com')
3 # if response.status_code==requests.codes.ok:
4 if response.status_code==200:
5     print('ok')
6 else:
7     print('error')
View Code

 

 

文件上传

import requests
files={
    'file':open('weibo.ico','rb')
}
response=requests.post('http://httpbin.org/post',files=files)
print(response.text)

获取cookie

import requests           
response=requests.get('htt
cook=response.cookies     
print(type(cook))         
for key,value in cook.item
    print(key,'=',value)  

维持会话

模拟登陆

import requests
s=requests.Session()#声明session对象,通过session请求网站
s.get('http://httpbin.org/cookies/set/name/123')
response=s.get('http://httpbin.org/cookies')
print(response.text)
View Code

证书验证

import requests
from requests.packages import urllib3
urllib3.disable_warnings()#去除py警告
response=requests.get('https://www.12306.cn',verify=False)#去除证书验证
print(response.status_code)

 

代理ip

import requests
proxies={
    'http': 'http://47.89.10.103:80/'
}
response=requests.get('http://www.geogle.com',proxies=proxies)
print(response.text)

有密码的代理ip

import requests
proxies={
    'http':'http://user.password@47.89.10.103:80'
}
response=requests.get('http://www.geogle.com',proxies=proxies)
print(response.text)

超时设置

import requests
from requests.exceptions import ReadTimeout
try:
    response=requests.get('https://taobao.com',timeout=0.1)
except ReadTimeout as e:
    print('timeout')

认证设置(需要直接登陆才能查看网站)

import requests
from requests import HTTPBasicAuth
response=requests.get('http://115.44.48.789:8888',auth=HTTPBasicAuth('user','123'))
print(response.status_code)

异常处理

import requests
from requests import ReadTimeout,ConnectionError,RequestException
try:
    response=requests.get('http://www.baidu.com',timeout=0.5)
    print(response.status_code)
except ReadTimeout:
    print('timeout')
except ConnectionError:
    print('connectionerror')
except RequestException:
    print('requesterror')

 

转载于:https://www.cnblogs.com/wang666/p/8125690.html


http://www.niftyadmin.cn/n/1155002.html

相关文章

排序的拆分,

//order by price or time //1,高亮状态2,升降顺序 -(void)sortByTime:(id)sender { NSArray *arr [self.fListArray sortedArrayUsingComparator:^NSComparisonResult(id item1, id item2) { HFFlight *flight1 item1; HFFlight *flight2 item2; //timebutton 排序 NSDate…

python爬虫基础 心路历程 爬取搜狐证券股票数据 split()切割

python爬虫基础 心路历程 爬取搜狐证券股票数据 python 数组基本用法split()切割 split语法: split(sep,maxsplit) sep表示用啥分割,默认空格,括号里输入啥用啥分割 maxsplit表示最多可以分割的次数 split() 括号里啥都不写,默认…

DocumentFragment的相关用法

额,今天看了vue1.0关于模板渲染的知识,认识了DocumentFragment这个东西,它相当于一个节点容器,我们对他使用appendChild时,只有它的子节点会被插入进去,它本身不会插入进去,并且使用 DocumentFr…

Java的equals 和 == 的区别

最近初学java 很懵逼equals 和 的区别是什么,不能随便的概括为 比地址,equals比内容,其实java 里面,除了string这个对象类型,equals 和 都是比较字符串内容是否一样,其他的都是比较地址是否相同&#xff…

2017-12-28练习

一、shell练习 写一个脚本1.显示当前系统日期和时间,而后创建目录/tmp/lstest2.切换工作目录至/tmp/lstest3.创建目录a1d,b56e,6test4.创建空文件xy,x2y,7325.列出当前目录下以a,x或者6开头的文件或目录6.列…

硬盘安装CentOS

硬盘安装CentOS6.3 64位(32位) 1.下载DVD版本的ISO镜像 2.下载工具:ExtFsd-0.51,分区助手5.2,easyBCD 3.在win7下,腾出一块5G的未分配空间 4.用分区助手从未分配的空间中划分5G大小的&#xff…

python类中的 实例方法 类方法 静态方法 私有变量 私有方法 不完全总结

实例方法总结 __init__方法是类初始化方法,一旦实例化就给对象赋__init__中的值,self是实例本身,在以下代码self指的是thecity这个对象 # 建立一个类 class city(object):sexfemale# 构造方法def __init__(self, name, age):self.name nam…

共轭分布

在贝叶斯概率理论中,如果后验概率和先验概率满足同样的分布律,那么,先验分布和后验分布被叫做共轭分布,同时,先验分布叫做似然函数的共轭先验分布。 Beta分布是二项式分布的共轭先验分布,而狄利克雷(Dirich…