当前位置: 首页 > news >正文

Python爬虫-requests模块

前戏:
        1.你是否在夜深人静的时候,想看一些会让你更睡不着的图片却苦于没有资源...
        2.你是否在节假日出行高峰的时候,想快速抢购火车票成功..。
        3.你是否在网上购物的时候,想快速且精准的定位到口碑质量最好的商品.

什么是爬虫:
        - 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程,

爬虫的价值:

        -实际应用

        -就业

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

        在法律中是不被禁止

        具有违法风险

        善意爬虫 恶意爬虫

爬虫带来的风险可以体现在如下2方面:
        -爬虫干扰了被访问网站的正常运营
        -爬虫抓取了收到法律保护的特定类型的数据或信息

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

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

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

爬虫在使用场景中的分类
        -通用爬虫:
        抓取系统重要组成部分。抓取的是一整张页面数据。
        -聚焦爬虫:
        是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。        

        -增量式爬虫:
        检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。


爬虫的矛与盾
        反爬机制
        门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
        反反爬策略
        爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户


robots.txt协议:任意网站后+/robots.txt即可见
        君子协议。规定了网站中哪些数据可以被爬虫爬取哪些数据不可以被爬取。

http协议

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

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

- User-Agent:Connection:请求完毕后,是断开连接还是保持连接
常用响应头信息
-Content-Type:服务器响应回客户端的数据类型


https协议:- 安全的超文本传输协议(security)
加密方式
对称秘钥加密
非对称秘钥加密
证书秘钥加密

正文

import requests# 检查当前脚本是否作为主程序运行
if __name__ == "__main__":# 定义 KFC 官方网站获取门店列表信息的 URLurl = '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-8with open(filename, 'w', encoding='utf-8') as fp:# 将响应内容写入到文件中fp.write(page_text)# 打印一条消息,表明文件已经成功保存print(f'{filename} 保存成功!!!')# 捕获由 requests 库抛出的任何异常except requests.RequestException as e:# 打印异常信息print(f'请求错误: {e}')

http://www.lryc.cn/news/396856.html

相关文章:

  • 适用于PyTorch 2.0.0的Ubuntu 22.04上CUDA v11.8和cuDNN 8.7安装指南
  • 使用conda安装openturns
  • Chameleon:动态UI框架使用详解
  • 7.10飞书一面面经
  • [数据结构] 归并排序快速排序 及非递归实现
  • 面试题 12. 矩阵中的路径
  • 钉钉扫码登录第三方
  • 多GPU系统中的CUDA设备不可用问题
  • python的列表推导式
  • 类与对象(2)
  • 迂回战术:“另类“全新安装 macOS 15 Sequoia beta2 的极简方法
  • 如何设计一个秒杀系统,(高并发高可用分布式集群)
  • 深度优先搜索(所有可达路径)
  • 如何配置yolov10环境?
  • 『大模型笔记』GraphRAG:利用复杂信息进行发现的新方法!
  • 数据结构1:C++实现变长数组
  • C++入门基础篇(下)
  • LabVIEW图像分段线性映射
  • Linux开发:进程件通过UDS传递内存文件句柄
  • Internet Download Manager6.42最新下载器互联网冲浪小能手们!
  • Vue 使用Audio或AudioContext播放本地音频
  • 从数据仓库到数据湖(上):数据湖导论
  • Perl 语言开发(六):深入探索 Perl 中的数组与列表操作
  • 统一视频接入平台LntonCVS视频监控平台具体功能介绍
  • redis的Bitmap 、HyperLogLog、Geo相关命令和相关场景
  • ✅小程序申请+备案教程
  • Google Guava Cache简介
  • githup开了代理push不上去
  • 【python】保存列表、字典数据到本地文件,以txt、json和pickle为例
  • 每日新闻掌握【2024年7月9日 星期二】