Python爬虫-requests模块

前戏:

1.你是否在夜深人静的时候,想看一些会让你更睡不着的图片却苦于没有资源...

2.你是否在节假日出行高峰的时候,想快速抢购火车票成功..。

3.你是否在网上购物的时候,想快速且精准的定位到口碑质量最好的商品.

什么是爬虫:

  • 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程,

爬虫的价值:

-实际应用

-就业

爬虫究竟是合法还是违法的?

在法律中是不被禁止

具有违法风险

善意爬虫 恶意爬虫

爬虫带来的风险可以体现在如下2方面:

-爬虫干扰了被访问网站的正常运营

-爬虫抓取了收到法律保护的特定类型的数据或信息

如何在使用编写爬虫的过程中避免进入局子的厄运呢?

  • 时常的优化自己的程序,避免干扰被访问网站的正常运行

-在使用,传播爬取到的数据时,审查抓取到的内容,如果发现了涉及到用户因此商业机密等敏感内容需要及时停止爬取或传播

爬虫在使用场景中的分类

-通用爬虫:

抓取系统重要组成部分。抓取的是一整张页面数据。

-聚焦爬虫:

是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。

-增量式爬虫:

检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。

爬虫的矛与盾

反爬机制

门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。

反反爬策略

爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户

robots.txt协议:任意网站后+/robots.txt即可见

君子协议。规定了网站中哪些数据可以被爬虫爬取哪些数据不可以被爬取。

http协议

  • 概念:就是服务器和客户端进行数据交互的一种形式。

常用请求头信息:请求载体的身份标识

  • User-Agent:Connection:请求完毕后,是断开连接还是保持连接

常用响应头信息

-Content-Type:服务器响应回客户端的数据类型

https协议:- 安全的超文本传输协议(security)

加密方式

对称秘钥加密

非对称秘钥加密

证书秘钥加密

正文

复制代码
import requests

# 检查当前脚本是否作为主程序运行
if __name__ == "__main__":
    # 定义 KFC 官方网站获取门店列表信息的 URL
    url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx'
    
    # 定义 HTTP 请求的头部信息,模拟浏览器请求
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0'
    }
    
    # 提示用户输入一个位置信息,作为搜索门店的关键词
    keyword = input('enter location:')  # 例如 "北京"

    # 循环请求第1页到第9页的数据
    for page in range(1,10):  
        # 定义发送请求时所需的参数
        params = {
            'op': 'keyword',  # 操作类型为关键词搜索
            'cname': '',  # 城市名称(此处为空)
            'pid': '',  # 其他参数(此处为空)
            'keyword': keyword,  # 用户输入的关键词
            'pageIndex': page,  # 当前请求的页面索引
            'pageSize': 1000,  # 每页显示的门店数量
        }
        
        # 尝试发送请求并处理响应
        try:
            # 发送 GET 请求,请求参数包括 URL、参数和头部信息
            response = requests.get(url=url, params=params, headers=headers)
            
            # 检查响应状态码,如果不是 200,将引发 HTTPError 异常
            response.raise_for_status()  
            
            # 获取响应内容
            page_text = response.text
            
            # 构建文件名,包括关键词、页码和 .html 扩展名
            filename = f'{keyword}_page_{page}.html'
            
            # 打开一个文件,以写入模式打开,并指定编码为 utf-8
            with open(filename, 'w', encoding='utf-8') as fp:
                # 将响应内容写入到文件中
                fp.write(page_text)
            
            # 打印一条消息,表明文件已经成功保存
            print(f'{filename} 保存成功!!!')
        
        # 捕获由 requests 库抛出的任何异常
        except requests.RequestException as e:
            # 打印异常信息
            print(f'请求错误: {e}')
相关推荐
默_笙4 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
qq_426003964 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技4 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读4 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时4 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
C语言小火车4 天前
C/C++ 为什么需要编译器?
开发语言·c++
奇思妙想聪明勤奋的小羊4 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1234 天前
2026年第38周GitHub趋势周报
python·科技·github