requests库

r = requests.get(url)

返回两个对象,响应对象和请求对象 
响应包含爬虫返回的内容

r.status_code# HTTP请求返回状态,200表示连接成功,404表示失败

r.text #HTTP相应内容的字符串形式,即url对应的页面内容

r.encoding #从HTTP header 中猜测的响应内容编码方式
# 如果header中不存在charset,则认为编码默认ISO-8859-1

r.apparent_encoding #从内容中分析出响应内容编码方式(备选编码方式)

r.content # HTTP响应内容的二进制形式

请求异常

requests.ConnectionError#网络连接异常,如DNS查询失败,防火墙拒绝连接

requests.HTTPError #HTTP错误异常

requests.URLRequired # URL缺失异常

requests.TooManyRedireets #超过最大重定向次数,产生重定向异常

requests.ConnectTimeout# 连接远程服务器超时

requests.Timeout # 请求URL超时,产生超时异常

通用代码框架

#coding=utf-8
import requests
def getHTMLText(url):
    try:
        r = requests.get(url)
        r.raise_for_ststus() # 如果状态码不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
if __name__ == '__main__':
    url = "http://www.baidu.com"
    print getHTMLText(url)

HTTP协议与请求库方法

HTTP超文本传输​​协议, 
以URL作为定位网络资源标识,URL格式: 
http:// host [:post] [path] 
host为合法的Internet域名或IP地址 
post端口号,缺省端口为80 
路径请求资源路径

HTTP协议与请求库方法一致 
get < - > requests.get请求获取URL的位置资源 
head < - > requests.head#获得该资源的头部信息 
post < - > requests.post向URL位置后添加新的数据 
put < - > request.put#请求向URL位置存储一个资源, 
覆盖原有资源 
补丁< - > requests.patch改变该处资源的部分内容 

删除< - >请求删除URL位置资源

requests.request(方法,URL,** kwargs)

方法有7种: 
requests.request('GET',url,** kwargs) 
'HEAD','POST','PUT','PATCH','删除','OPTION'

r.requests('GET',url) 
print r.request.url 
能够输出向服务器提交的url链接。

** kwargs为可选参数13个:

1.params作为参数增加到url中

kv={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
#http://python123.io/ws?key1=value1&key2=value2

2.data:字典,字节序列或文件对象,作为请求的内容

kv={'key1':'value1','key2':'value2'}
r=requests.request('POST','http://python123.io/ws',data=kv)
body='主体内容'
r=requests.request('POST','http://python123.io/ws',data=body)

3.json:JSON格式的数据,作为请求的内容

kv={'key1':'value1'}
r=requests.request('POST','http://python123.io/ws',json=kv)

4.headers:字典,HTTP定制头

hd={'user‐agent':'Chrome/10'}
r=requests.request('POST','http://python123.io/ws',headers=hd)

5.cookies:字典或CookieJar,请求中的cookie

6.auth:元组,支持HTTP认证功能

7.files:字典类型,传输文件

fs={'file':open('data.xls','rb')}
r=requests.request('POST','http://python123.io/ws',files=fs)

可以用来向URL传输文件

8.timeout:设定超时时间,秒为单位

r=requests.request('GET','http://www.baidu.com',timeout=10)
  • 9.proxies:字典类型,设定访问代理服务器,可以增加登录认证
pxs={
'http':'http://user:pass@10.10.10.1:1234','https':'https://10.10.10.1:4321'
}
r=requests.request('GET','http://www.baidu.com',proxies=pxs)

10.allow_redirects:True / False,默认为True,重定向开关

11.stream:True / False,默认为True,获取内容立即下载开关

12.verify:True / False,默认为True,认证SSL证书开关

13.cert:本地SSL证书路径

requests.get(url,params = None,** kwargs)

∙params:url中的额外参数,字典或字节流格式,可选 
** kwargs:12个控制访问的参数

requests.head(url,** kwargs) 
∙** kwargs:12个控制访问的参数 
常用

更改头部信息访问:

coding=utf-8
import requests
url = 'https://www.amazon.cn/gp/product/B01M8L5Z3Y'
#有些网站根据头部信息判断为爬虫拒绝访问,可以更改头部信息来访问
try:
    kv = {'user-agent':'Mozilla/5.0'}
    r = requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print r.text[:3000]

except:
    print 'error'

百度360关键字访问

import requests
keyword = 'pyhton'
url = 'http://www.baidu.com'
try:
    kv = {'wd':keyword}
    r = requests.get(url,params = kv)
    r.encoding = r.apparent_encoding
    print r.request.url
    r.raise_for_status()
    print len(r.text)
except:
    print "error"

入门例子:百度翻译中英互译

导入请求
导入json
导入sys


类BaiduFanyi:
    def __init __(self,
        query_string ):self.post_url =“http://fanyi.baidu.com/basetrans”
        self.query_string =
        query_string self.headers = {
            “User-Agent”: “Mozilla / 5.0(iPhone; CPU iPhone OS 10_3,如Mac OS X)AppleWebKit / 602.1.50(KHTML,如Gecko)CriOS / 56.0.2924.75 Mobile / 14E5239e Safari / 602.1”}


    def lang_detect(self):#进行语言检测
        #1。准备数据
        lang_detect_url =“http://fanyi.baidu.com/langdetect”
        post_data = {“query”:self.query_string}
        #2。发送请求
        html_str = self.parse_url(post_data,url = lang_detect_url)
        print(html_str)
        #3。
        提取数据lan = json.loads(html_str)[“lan”]
        返回lan


    def get_post_data(self):#准备发布数据
        lan = self.lang_detect()
        to =“zh”如果lan ==“en”else “恩”
        如果len = “EN” #:
        #至= “EN”
        #别的:
        #为= “EN”
        数据= { “查询”:self.query_string,
                “ 从”:LAN,
                “ 要”:要}
        回报data


    def parse_url(self,post_data,url):#发送请求,获取数据
        response = requests.post(url,post_data,headers = self.headers)
        返回response.content。decode()


    def get_ret(self,html_str):#提取结果
        dict_ret = json.loads(html_str)
        ret = dict_ret [“trans”] [0] [“dst”]
        print(“{}的翻译结果是:{}”。format(self.query_string,ret))


    def run(自):#实现主要逻辑
        #1.url,post_data
        post_data = self.get_post_data()
        #2发送请求,获取数据
        html_str = self.parse_url(post_data,URL = self.post_url)
        #3提取数据,打印
        自.get_ret(html_str)


if __name__ =='__ main__':    query_string =
    sys.argv [1]
baidu_fanyi = BaiduFanyi(query_string)

    baidu_fanyi.run()

在终端找到你的文件并执行加上你要翻译的内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值