python爬虫基础--2(urlopen)

一、urlopen的url参数

urllib.request.urlopen(url,data = None,[ timeout,] *,cafile = None,capath = None,cadefault = False,context = None )

其中,url不仅可以是一个字符串,也可以是一个request对象,这就需要我们先定义一个Request对象,然后将这个Request对象作为urlopen的参数使用

实例:

from urllib import request
import chardet

if __name__ == "__main__":
    req = request.Request("http://fanyi.baidu.com")
    response = request.urlopen(req)
    html = response.read()
    charset = chardet.detect(html)
    html = html.decode(charset['encoding'])
    print(html)

二,urlopen()返回的对象

可以使用read()进行读取,同样也可以使用geturl()方法、info()方法、getcode()方法。

geturl()返回的是一个url的字符串;

info()返回的是一些meta标记的元信息,包括一些服务器的信息;

getcode()返回的是HTTP的状态码,如果返回200表示请求成功。

实例:

from urllib import request

if __name__ == "__main__":
    req = request.Request("http://fanyi.baidu.com/")
    response = request.urlopen(req)
    print("geturl打印信息:%s"%(response.geturl()))
    print('**********************************************')
    print("info打印信息:%s"%(response.info()))
    print('**********************************************')
    print("getcode打印信息:%s"%(response.getcode()))

3,urlopen的data参数

我们可以使用data参数,向服务器发送数据。根据HTTP规范,GET用于信息获取,POST是向服务器提交数据的一种请求

审查元素–>进行翻译—>查看network—>在headers中找到对应的Request URL以及Form Data

from urllib import request
from urllib import parse
import json

if __name__ == "__main__":
    #注意:将traslate后面的_o去掉,可能是网站的真实请求地址发生了变动
    Request_URL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
    #创建Form_Data字典,存储Form Data
    Form_Data = {}
    Form_Data['i'] = 'net'
    Form_Data['from'] = 'AUTO'
    Form_Data['to'] = 'AUTO'
    Form_Data['smartresult'] = 'dict'
    Form_Data['client'] = 'fanyideskweb'
    Form_Data['doctype'] = 'json'
    Form_Data['version'] = '2.1'
    Form_Data['keyfrom'] = 'fanyi.web'
    Form_Data['action'] = 'FY_BY_REALTlME'
    #使用urlencode方法转换标准格式
    data = parse.urlencode(Form_Data).encode('utf-8')
    # 传递Request对象和转换完格式的数据
    response = request.urlopen(Request_URL, data)
    # 读取信息并解码
    html = response.read().decode('utf-8')
    # 使用json
    translate_results = json.loads(html)
    # 找到翻译结果
    print(translate_results)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值