from urllib import Request

urllib 之 Request类

为什么使用Request类?

功能比urlopen强大,可以设置请求头,达到正确访问的目的。

 

调用方式:

创建一个Request对象rq

调用request模块的urlopen传入对象rq

 

作业:

1. 爬取猫眼实时电影数据

from urllib import request

url = 'https://piaofang.maoyan.com/dashboard-ajax?orderType=0&uuid=1734361ae5fc8-0b0934f0550e79-3b634404-1fa400-1734361ae5fc8&riskLevel=71&optimusCode=10' # url为json文件的url地址

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}

rq = request.Request(url, headers=header)
resp = request.urlopen(rq)

print(resp.getcode())
print(resp.read().decode('utf8'))

2. 爬取别逗了多页数据

'''
爬取别逗了多个页面信息
'''
from urllib import request
import time

url = 'https://www.biedoul.com/index/'

header = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
}

for i in range(29892, 29903):
    url = 'https://www.biedoul.com/index/' + str(i)
    rq = request.Request(url, headers=header)
    resp = request.urlopen(rq)
    print(resp.read().decode('utf8'))
    time.sleep(1)

 

1 猫眼实时数据是通过ajax再次发送请求获取数据,因此我们爬取到的网页源码中没有我们想要的最终页面的数据,这是我们可以在network里面查找ajax请求获取到的Json数据,并且请求该数据的url,从而爬取到想要的数据

2 别逗了网页源码就是最终呈现的页面,因此我们只需要请求相应页面的url就可以爬取数据,在进行多页爬取的时候,遇到一个坑,在for循环中进行url拼接的时候,写成了url = url + str(变量i),这里出现了url不符合预期的情况,因此没爬取到想要的数据,最后修改为 url = 'https://www.biedoul.com/index/' + str(变量i),,爬取到相应的多页数据。

 

总结:Request类要比单纯使用urlopen功能强大,可以进行请求头的配置,伪装浏览器发送网络请求

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值