爬虫基础--requests基础操作

目录

一、requests是什么?

二、使用步骤

1、环境安装

2、编码流程

3、模拟浏览器的侧重点

请求头模拟

请求参数模拟

三、两个请求

1、get请求

 使用requests发起get请求

2、post请求

post请求的主要参数

 使用requests发起post请求

四、请求参数动态化和UA伪装

总结

下期预告

爬虫基础--requests进阶


一、requests是什么?

requests是爬虫中一个基于网络请求的模块。

作用:模拟浏览器上网

二、使用步骤

1、环境安装

pip install requests

2、编码流程

1、指定url

2、发起请求

3、获取响应数据

4、持久化存储

3、模拟浏览器的侧重点

  • 请求头模拟

  • 静态请求参数
    • User-Agent:请求载体的身份标识。
    • Cookie:浏览器记录标识。
    • Refere:防盗链。
    • 其他参数。
  • 请求参数模拟

    • 静态请求参数
      • 直接复制静态参数即可。
    • 动态请求参数(重点)
      • 如何确定数据是否是动态加载的?
        • 使用抓包工具多次抓取该数据包,检测不同时刻抓取数据包中的请求参数是否有变动。
      • 有哪些方式可以实现动态加载数据?
        • 通过Ajax请求生成动态加载数据
          • 这种方法在日常网站中应用时比较多的,极为常见。
        • 通过JS生成动态加载的数据
          • 这种方式少见一些,需要用到逆向工程解决。
      • 如何在浏览器中检测抓取的数据是否为动态加载?
        • 在开发者工具中进行局部搜索,如果搜索不到则说明数据是动态加载的。
        • 在数据包上按CTRL+F。
      • 如何获取动态加载的数据?(重点)
        • 在浏览器开发者工具中进行全局搜索。如果在进行全局搜索中,没有搜到想要的数据,则说明该组数据被加密了,此时就需要进行逆向操作。
        • 点击浏览器开发者工具右上角的三个点,选择Search,进行全局搜索。

         

 

三、两个请求

1、get请求

get请求的主要参数

url:发起请求的url

headers:请求头的伪装

params:请求参数

proxies:指定代理

 使用requests发起get请求

通用模板

import requests

#指定url
url = "这里存放目标网站的网址"


#发起请求、获取响应
resp = requests.get(url)

持久化存储
with open("保存本地的地址",mode="模式",encoding="utf-8") as f:
    f.write(resp.read().decode())

 搜狗首页数据采集(示例):

import requests

#指定url
url = 'https://www.sogou.com/'

#发起请求
response = requests.get(url=url) 

#获取响应数据/爬取到的数据
page_text = response.text 

#持久化存储
with open('./sogou.html','w') as fp:
    fp.write(page_text)
print('数据爬取存储成功!')

 

2、post请求

post请求的主要参数

url:发起请求的url

headers:请求头的伪装

data:请求参数

proxies:指定代理

json:如果抓包工具中的请求参数为字符串形式的键值对,则使用json参数

 使用requests发起post请求

通用模板

import requests

#指定url
url = "这里存放目标网站的网址"

#发起请求、获取响应
resp = requests.post(url, headers=headers)

持久化存储
with open("保存本地的地址",mode="模式",encoding="utf-8") as f:
    f.write(resp.read().decode())


 百度翻译(示例):

import requests

url = "https://fanyi.baidu.com/sug"
data = {
    "kw": input("请输入一个单词:")
}
resp = requests.post(url, data=data)
print(resp.text)
print(resp.json()['data'])

 

四、请求参数动态化和UA伪装

请求参数:

        是客户端向服务端发起请求时携带的参数。

UA伪装:

        目标网站是通过监测请求头中user-agent来判断请求是否由浏览器发起的。

        而UA伪装就是伪装请求载体的身份标识,这种反爬机制是一种最常见也是最通用的,绝大多数网站都会携带该反爬机制。

网页采集器(输入你想要查询的名词,即可查询到相应的页面并且保存下来)

import requests

#请求参数动态化
keyword = input('请输入关键字:')

#稍后想要把该字典作为请求参数
pram = {
    'query':keyword, #只存在一个键值对(存在一组请求参数)
}

#指定url
url = 'https://www.sogou.com/web' 

#存放需要伪装的头信息
headers = { 
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}

#通过headers参数进行了头信息的伪装
#params:get请求的参数
response = requests.get(url=url,params=pram,headers=headers)

#获取响应数据
page_text = response.text

#持久化存储
fileName = keyword + '.html'
with open(fileName,'w') as fp:
    fp.write(page_text)


总结

本文主要讲述了requests模块的基本用法,动态参数的查找流程,初识了几个简单的反爬策略,请求参数动态化以及UA伪装等。

下期预告

爬虫基础--requests进阶


望各位学者朋友提出问题,帮助我及时改正,若有雷同之处,纯属巧合,联系我改之。

 

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dear.爬虫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值