学习笔记 -- Python爬虫 - requests模块(通用爬虫)


#内容为视频笔记及个人理解,若有错误还望各位大佬指正

requests模块


python中原生的一款基于网络请求的模块, 能够模拟浏览器发出请求。

  1. 指定 URL
  2. 发出请求
  3. 获取响应数据
  4. 持久化存储
import requests

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

response = requests.get(url=url)  # 发出请求  并接收 get 所返回的响应对象

page_text = response.text         # 响应对象中的text属性所返回的就是响应对象的源码数据(字符串的形式)

# 此时已经获得网页中的数据 存储再一个文本文件 或 tempfile


get(params)参数


当使用浏览器发出请求时, 如果我们需要传入参数时可以使用 params

地址栏
当我们将 query 对应的 小乌龟 换成其他的词汇时, 搜索出的结果也会产生不同, 我们可以将其作为参数传入 params , params可以接收一个列表或字典。

# -*- coding:utf-8 -*-

import requests

url = "https://www.sogou.com/web?"

# 处理url携带的参数
kw = input("enter a word:")
param = ["query",kw]

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

filename = kw+".html"
with open(filename,"w",encoding="utf-8") as fn:
    fn.write(response.text)


get(headers)参数


UA : User-Agent (请求载体的身份标识)

UA检测 : 门户网站的服务器会检测对应请求的载体身份标识, 如果检测到请求的载体身份标识为某一款浏览器, 意味着当前发出请求的是正常请求。如果检测到请求的身份载体标识不是基于某一款浏览器, 则表示该次请求是一个非正常请求, 服务器端就很有可能拒绝该次请求。(上述代码执行即可看到非正常请求的显示信息)

UA伪装 : 让爬虫对应的请求载体身份标识伪装成某一款浏览器, 将对应的User-Agent封装到一个字典中, 传入 getheaders

# -*- coding:utf-8 -*-

import requests

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"}

url = "https://www.sogou.com/web?"

# 处理url携带的参数
kw = input("enter a word:")
param = {"query":kw}

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

filename = kw+".html"
with open(filename,"w",encoding="utf-8") as fn:
    fn.write(response.text)
print(kw+"爬取完成")


通用爬虫


当我们使用 get 请求获取整张页面的数据时, 可能会带有一些参数, 这些参数以"&"符号连接, 以key=value存在。

此时 get 中的 params 可以接收一个字典形式的参数, 例如搜索框内的参数

param={“query : 小王八”}

在指定请求头时同样要注意也是一个字典的形式(我是每次都忘)

header = {“User-Agent” : (这里是你的浏览器的请求头信息)}

发送请求及接收请求

response = get(url=url, params=param, headers=header)

url=对应的网址
param=参数
header=请求载体的信息(在VScode中并没有提示这个参数, 不过牟问题, 硬上就行)

此时的 response 就是我们请求到的信息

text = response.text # 返回数据信息(即网页源码)

Ajax请求


当我们向页面内输入数据时, 服务器会根据输入内容响应新的结果, 这就是一个ajax请求。

当我们只需要获取我们输入数据所得到的内容, 或者说网页内刷新出来的内容时, 需要检查网页的信息

右键 > 检查 > network > XHR

单击文件列表的文件, 选择headers向下滚动如果我们输入了参数可以看到 Form Data 下的内容有我们输入的参数, 并且对应了一个名称, 在headers那一栏找到response可以看到返回的数据信息

当我们需要爬取这段信息时, 先要确认一下网址的变化, 并查看网页检查信息中的响应结果的数据格式及发出请求的方法。

数据格式即 response headers中的 content-type
请求方式即 general中的 request method

使用post()来向页面发出请求时, post的参数 data 与get的 params 相同, 返回的数据格式为application/json时, 我们可以使用响应对象 .json() 来获取数据, 同样也可以使用 .text 不过建议大家使用 .json()


import requests
import json

if __name__ == "__main__":
    # 指定url
    url = "http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList"

    # 参数
    params = {
        "on": "true",
        "page": 1,
        "pageSize": 15,
        "productName": "",
        "conditionType": 1,
        "applyname": "",
        "applysn": ""
    }

    # 请求头信息
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41"
    }

    # 发起请求
    response = requests.post(url=url,data=params, headers=header)
    
    # 获取响应数据
    json_dic = response.json()
    fp = open("json_.json", "w", encoding="utf-8")
    json.dump(json_dic, fp=fp, ensure_ascii=False)
    fp.close()

只有当返回的数据为Json格式时, 才可以使用 响应对象 . json 的方法获取Json串。




#第一次学爬虫, 此文章内容为个人理解, 希望不要误导跟我一样初入爬虫的朋友们
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值