Python爬虫学习:requests的使用,及两个实例

目录

一、简介

二、使用方法(爬虫的流程)

三、实例

(一)爬取搜狗首页的页面数据:

(二)豆瓣电影喜剧前20排行

1.分析

2.爬取

3.代码


一、简介

        Python 中基于网络请求的模块:urllib、requests模块,目前 requests 基本代替了 urllib,因为 requests 更加简洁高效。

        requests 是 Python中原生的一款基于网络请求的模块,功能强大,归根到底,requests 模块的作用就是模仿浏览器发请求

二、使用方法(爬虫的流程)

模拟浏览器发请求的流程如下:

1.指定url

2.发起请求

3.获取响应数据

4.持久化存储

三、实例

(一)爬取搜狗首页的页面数据:

1.指定 url

import requests
url='https://www.sogou.com/'

2.发起请求:requests 可以发起 get 与 post 请求

        get() 方法会返回一个响应对象,用 response 接收

response=requests.get(url=url)

3.获取响应数据

        获取的是页面的 HTML 源码数据,text 返回的是字符串形式的响应数据

page_text = response.text
print(page_text)

4.持久化存储

with open('./sogou.html','w',encoding='utf-8') as fp:
    fp.write(page_text)

        存在当前目录下,会生成一个.html文件

         打开后就是该网页的HTML源码了

(二)豆瓣电影喜剧前20排行

1.分析

        打开豆瓣电影的网站,选择排行榜,定位到喜剧类型

        浏览过程中发现,拖动鼠标滚轮到底部的时候页面会进行局部刷新,说明在滚轮拖动至底部时页面会发起 Ajax 异步请求

        打开抓包工具定位 Network 中的 XHR选项卡当中,拖动滚轮,到底部后新增了一个请求

         查看一下新发出的请求信息和参数

        可知:该 URL 发起的为 get 请求,返回数据类型为 json 类型,有五个参数。因此,只要对该URL发起一个 get 请求并令其携带五个参数即可得到一组 json 类型的响应数据

2.爬取

(1)导包,指定URL

import requests
import  json

url='https://movie.douban.com/j/chart/top_list?type=24&interval_id=100:90&action=&start=20&limit=20'

(2)参数处理

        但凡参数,封装到字典里比较好处理(?后面的就是该网页的参数)将网页参数复制过来

param = {'type': '24',
         'interval_id': '100:90',
         'action': '',
         'start': '20',
         'limit': '20'}

        参数的意思:start:从库中的第几部电影取;limit:一次取几部电影。这些参数可以动态修改

(3)UA伪装,获取响应数据

head={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'}

response=requests.get(url,params=param,headers=head)

list_obj=response.json()

        该返回结果是一个列表类型的对象,因此使用 list_obj 接收

(4)储存数据

with open('./douban.json','w',encoding='utf-8') as fp:
    json.dump(list_obj,fp,ensure_ascii=False)

print('over')

        代码已经完成,运行成功,通过更改 “start” 与 “limit” 参数可以获取排行榜单上某段排名的电影数据。如排行榜前20部,第一部是美丽人生(从0开始)

        期间一个粗心的错误:未删除URL的?后面的参数导致报错

3.代码

import requests
import json

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

param = {'type': '24',
         'interval_id': '100:90',
         'action': '',
         'start': '0',
         'limit': '20'}

head={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'}
response=requests.get(url,params=param,headers=head)
list_obj=response.json()

with open('./douban.json','w',encoding='utf-8') as fp:
    json.dump(list_obj,fp,ensure_ascii=False)
# fp = open('./douban.json', 'w', encoding='utf-8')
# json.dump(list_obj, fp, ensure_ascii=False)

print('over')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带带琪宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值