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

python—爬虫的初步了解

Python 爬虫(Web Scraping)是一种自动化从网站上提取数据的技术。Python 由于其简洁的语法、丰富的库和强大的社区支持,成为了实现网络爬虫的首选语言之一。下面是一些Python爬虫的基本概念和步骤:

1. 爬虫的基本概念

  • 请求(Request):爬虫向服务器发送的请求,通常包括URL、HTTP方法(如GET、POST)、请求头等。
  • 响应(Response):服务器对爬虫请求的回应,包含请求的网页内容(HTML、JSON等)、状态码(如200表示成功)、响应头等。
  • 解析(Parsing):从响应内容中提取需要的数据。这通常涉及到HTML或JSON的解析。
  • 存储(Storing):将提取的数据保存到数据库、文件或其他存储系统中。

2. Python 爬虫的基本步骤

确定目标:明确要爬取的网站和数据。
发送请求:使用Python的库(如requests、urllib)向目标网站发送HTTP请求。
获取响应:接收服务器返回的响应内容。
解析内容:使用HTML解析库(如BeautifulSoup、lxml)或JSON解析库(Python内置的json模块)来解析响应内容,提取所需数据。
数据存储:将提取的数据保存到文件、数据库或其他存储介质中。
异常处理:添加异常处理逻辑,确保爬虫的稳定性和健壮性。
遵守规则:遵守robots.txt协议和网站的使用条款,不要对网站造成过大压力。

3. 常用的Python库

  • requests:用于发送HTTP请求。
  • BeautifulSoup:用于解析HTML和XML文件,提取数据。
  • lxml:另一种HTML和XML解析库,速度比BeautifulSoup快。
  • json:Python内置的库,用于解析JSON数据。
  • re:Python内置的库,用于正则表达式匹配。
  • pandas:用于数据处理和分析,方便地将数据保存到CSV或Excel文件中。
  • Scrapy:一个快速高级的Web爬虫框架,用于爬取网站并从页面中提取结构化的数据。

4.爬虫相关知识

  • URL:统一资源定位符 uniform resource locator

bdce42aed53c6987a10545ea9e6a1e6.png
http: 超文本传输协议 HyperText Transfer Protocol 默认端口 80

https: 安全的超文本传输协议 security 默认端口 443
www.example.com 域名
/path/to/myfile.html 资源路径

  • 前端代码
<!DOCTYPE html> 声明为 HTML5 文档
<html>..</html> 是网页的根元素
<head>..</head> 元素包含了文档的元(meta)数据,如 <meta charset="utf-8"> 定义网页编码格式为 utf-8<title>..<title> 元素描述了文档的标题
<body>..</body> 表示用户可见的内容
<div>..</div> 表示框架
<p>..</p> 表示段落
<ul>..</ul> 定义无序列表
<ol>..</ol>定义有序列表
<li>..</li>表示列表项
<img src="" alt="">表示图片
<h1>..</h1>表示标题
<a href="">..</a>表示超链接
<!DOCTYPE html>
<html><head><!-- 内嵌样式 --><style type="text/css">body{background-color:yellow;}p{font-size: 30px;color: springgreen;}</style><meta charset="utf-8"><title>红米煮粥</title></head><body><a href="www.anhuisjxy.com">点击访问</a><h1>红米煮粥www.anhuisjxy.com</h1><h2>Python爬虫</h2><div><p>认识网页结构</p><ul><li>HTML</li><li>CSS</li></ul></div></body>
</html>
<!DOCTYPE html>
<html><head><style type="text/css">body{background-color: rgb(220, 226, 226);}</style><meta charset="utf-8"><title>红米煮粥</title></head><body><h1 style="color: blue;">红米煮粥www.anhuisjxy.com</h1><h2>Python爬虫</h2><p>点击下方按钮获取当前时间</p><button onclick="DisplayDate()">点击这里</button><p id="time" style="color: red;"></p><!-- script标签内部编写js代码 --><script>function DisplayDate(){document.getElementById("time").innerHTML=Date()}</script></div></body>
</html>

5.爬虫相关包的下载

  • 安装requests,lxml包
pip install requests
  • pip 换源
pip config set global.index-url https://pypi.mirrors.ustc.edu.cn/simple/
pip config set install.trusted-host pypi.mirrors.ustc.edu.cn
  • User-Agent: 身份标识 表示你是哪个浏览器

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 核函数支持向量机(Kernel SVM)
  • IDEA中常用的快捷键
  • 【医学影像】RK3588+FPGA:满足远程诊疗系统8K音视频编解码及高效传输需求
  • SpreadsheetLLM:微软对Excel编码的“摊膀伏”
  • LVS+Nginx高可用集群---搭建高可用集群负载均衡
  • 【论文阅读笔记】Hierarchical Neural Coding for Controllable CAD Model Generation
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • LeetCode 每日一题 2024/7/15-2024/7/21
  • 6 回归集成:xgb、lgb、cat
  • Air780E/Air780EP/Air780EQ/Air201模块遇到死机问题如何分析
  • 最新!CSSCI(2023-2024)期刊目录公布!
  • AndroidStudio与手机进行无线调试
  • SRv6 BE 配置过程(VRF ping通场景)
  • 图——图的应用02最短路径(Dijkstra算法与Floyd算法详解),拓扑排序及关键路径
  • CSS3 教程
  • Angular Elements 及其运作原理
  • crontab执行失败的多种原因
  • es的写入过程
  • java小心机(3)| 浅析finalize()
  • oschina
  • PHP变量
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue 动态创建 component
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 前端性能优化——回流与重绘
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 国内开源镜像站点
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Redis 入门到精通(七)-- redis 删除策略
  • #QT(一种朴素的计算器实现方法)
  • (C)一些题4
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计大学生兼职系统
  • (十六)一篇文章学会Java的常用API
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net wcf memory gates checking failed
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .net和jar包windows服务部署
  • @Async 异步注解使用
  • [ C++ ] STL---string类的模拟实现
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • []Telit UC864E 拨号上网
  • [5] CUDA线程调用与存储器架构
  • [Android Studio 权威教程]断点调试和高级调试
  • [Bugku]密码???[writeup]