python urllib

  1. urlopen()方法
    urlib.urlopen(url[,data[,proxies]]):创建一个表示远程url的类文件对象,然后就相当于本地的文件对象,可以来获取远程数据。
    • url表示远程数据的路径,一般为网址
    • data表示已post请求提交到url的数据
    • proxies表示设置代理
    • urlopen返回一个类文件对象、

方法:

read() 文件读操作/ reanline() 按行读取形成列表/ fileno()返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作 / close()关闭文件

info()返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息

getcode()返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到

geturl()返回请求url

抓取url的内容,步骤:
1. 导包:'from urlib import request
2. 使用with语句,发送GET请求:with request.urlopen('https://api....')as f:
3. 查阅已读取的网页资源 :.read()
4.返回需要的数据,例如:(f.getheaders())
5.当需要将请求伪装成浏览器的情况时,需要加一个:
req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
这是伪装成一个iphone 6 的请求,这个时候网站就会返回,相应的页面。

例子:

# -*- coding: utf-8 -*-
"""
利用urllib读取JSON,然后将JSON解析为Python对象:
    @step1:使用with-closing方法请求url,并读取url中的内容
    @step2:将读取的字节型文件,转化为字符串型
    @step3:使用json.loads函数将str-python对象
"""
from urllib import request
from contextlib import closing
import json
def fetch_data(url):
    with closing(request.urlopen(url)) as f:
        text_json=f.readline()

    return json.loads(text_json.decode('utf-8'))

# 测试
URL = 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json'
data = fetch_data(URL)
print(data)
assert data['query']['results']['channel']['location']['city'] == 'Beijing'
print('ok')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值