【python爬虫】requests初应用(百度翻译、豆瓣)

【python爬虫】requests初应用(百度翻译、豆瓣)


requests初了解

Requests库是一个Python的第三方库,可以通过调用来帮助我们实现自动爬取HTML网页页面以及模拟人类访问服务器自动提交网络请求。
安装方式:
pip install requests


一、获取百度翻译的结果(单词)

  1. 首先我们先进入百度翻译的网址https://fanyi.baidu.com/,然后按F12打开开发者工具,再点击如图所示按钮将加载信息清空
    在这里插入图片描述
  2. 然后将输入法换成英文(这里必须换成英文),否则就无法拿到如图的下拉菜单。在开发者工具中选择XHR,我们会发现一个sug页面
    在这里插入图片描述
  3. 打开这个sug我们会发现会出来这个下拉列表中的内容,可以发现,我们已经找到了数据源
    在这里插入图片描述
  4. 我们选择headers,发现数据请求的网址是https://fanyi.baidu.com/sug,查看payload,发现里面只有一个参数kw
    在这里插入图片描述

通过以上几个步骤,我们写代码的思路已经很明显了。代码示例如下:

import requests

url = "https://fanyi.baidu.com/sug"

s = input("请输入要翻译的内容:")

data = {
    "kw": s
}

resp = requests.post(url,data=data)
print(resp.json())

调用requests库,访问数据源地址,在headers中发现请求方式是post,将参数单独列出,方便管理,最后返回一个json数据。

二、 爬取豆瓣信息

  1. 首先进入豆瓣官网https://movie.douban.com/,首页上面有许多类目,我们选择排行榜,我们可以看到排行帮页面里面有很多信息,但是简简单单采用requests并没有办法拿到数据(这一部分信息的爬取会在后面的文章讲解),但是我们可以看到右边有一个分类排行榜,我们可以拿到分类排行榜里面的信息。
    在这里插入图片描述
  2. 假如我们选择喜剧类目,打开开发者工具,清空当前的加载项,重新加载页面,从返回的网页源代码中,我们没有找到关于这些电影的信息,因此我们断定,这一部分信息是通过二次请求返回的。
    在这里插入图片描述
  3. 那么,我们选择XHR,当我们查看到第三个的时候,发现,里面有20条信息,但我们点开第一条,很不幸,他们的电影信息被我们找到了,那就相当于说我们已经找到了数据源。
    在这里插入图片描述
  4. 我们查看headers,但是我们发现,request URL特别长,后面跟了很多东西,其实在问号后面都是所发送的参数,因此,我们设置网址的时候只要问号的前面一部分即可,同时也知道请求方式为get
    在这里插入图片描述
  5. 查看payload,了解参数构成
    在这里插入图片描述

代码如下:

import requests

url = 'https://movie.douban.com/j/chart/top_list'

#参数--payload
params = {
	"type": "24",
	"interval_id": "100:90",
	"action":"",
	"start": 0,
	"limit": 20
}

resp = requests.get(url = url,params=params)
print(resp.text)
resp.close() #关掉request,防止过多的请求 

get和post的请求参数设置不同,get中的参数是params,而post中的参数是data
但是结果我们发现,并没有内容输出,只有一种可能,就是我们被反扒了
在这里插入图片描述
6. 所以我们再给它设置一个headers,让python来模拟浏览器来发送数据,我们可以从获取数据的网页上的headers中找到我们所需要设计的,一般只用设置一个user-agent参数,然后把resp.text换成resp.json(),这样得到的数据看起来更舒服一点。

import requests

url = 'https://movie.douban.com/j/chart/top_list'

#参数--payload
params = {
	"type": "24",
	"interval_id": "100:90",
	"action":"",
	"start": 0,
	"limit": 20
}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36"}
resp = requests.get(url = url,params=params,headers = headers)
print(resp.json())
resp.close() #关掉request,防止过多的请求 

最终结果如下:
在这里插入图片描述
然后我们就可以对得到的数据进行处理,最终拿到我们想要的一部分,比如影片名,影片的信息网址等
7. 我们这样设置参数,得到的只是当前页面的信息,但是我们想获取下一个页面的信息呢?我们可以往下拉,会发现又加载出来一个网页,点开发现,参数中的start参数变化了,我们就可以明白,我们通过调整start参数来获取所有的数据!
在这里插入图片描述

总结

这篇文章以两个例子来大概讲解requests库在爬虫中的应用,以及在最简单的爬虫中,我们从哪寻找数据,以及参数的设置。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值