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

Python爬虫爬取数据案例

一、准备工作

1.爬虫协议

爬虫协议,是每一个爬虫开发者都应该遵守的协议,但是他是一个君子协定,并不是强制协定,但为了维护网络环境,大家都应该遵守下,把环境搞臭了,还是程序员受害。
那爬虫协议怎么看呢,我们可以瞅瞅B站的爬虫协议,获取方式如下:

https://www.bilibili.com/robots.txt


访问上面地址后,我们就可以看到B站的爬虫协议了,他的不允许爬取的内容有两个大类,第二个是首页内容,因为首页内容访问量很大,如果大家都来爬这个数据,那么对B站来说,压力会很大,一般这类TOC的网站,首页都是不允许爬取的。
下面再来看下百度的,爬虫协议

https://www.baidu.com/robots.txt


可以看到除了百度声明的一些爬虫外,百度禁止一些数据爬取行为,因为百度的访问量很大,如果大家爬取数据,对他压力确实很大,也能理解。

2.准备工作

  • python安装 requests

    pip install requests

    requests被誉为python中最好用的三方http客户端包,网络请求必备

  • python安装lxml
    这是一个高性能的html/xml这种标记语言的解析库,支持Xpatch语法获取前端资源和数据,Xpatch是前端根据标签获取数据的一种原始方式。对于标签语言获取数据很是方便。

    pipinstalllxml

3.lxml基础语法

这里主要介绍下爬取数据时,获取数据定位元素的语法,假设有如下程序:

<htmlstyle="height:100%"><bodyclass="layui-layout-body"style="height:100%;overflow:auto;"><divclass="layui-layout layui-layout-admin"style="height:100%"><inputtype="hidden"value="false"id="commonLogin"><inputtype="hidden"value="false"id="commonUserHasVip"></div><divclass="layui-layout layui-layout-admin"style="height:100%"><inputtype="hidden"value="false"id="commonLogin"><inputtype="hidden"value="false"id="commonUserHasVip"></div></body></html>

下面根据上面标签来进行解释语法

  • / 从根节点的直接子元素查找
    /html 表示从根节点开始查找所有的html标签,返回一个list,再比如 /html/body/div 则是查找所有的div标签返回一个list
  • // 从任意位置查找
    也就是全文超找该标签,然后返回list,比如 //div,则是会返回一个拥有两个div元素的list
  • .点表示从当前元素下开始查找
    比如使用 //div获取到了两个div标签,但是div下的还有其他东西,我们这时候就可以基于当前元素继续查找,此时使用点 ./input 即可查找到input标签, 如果是.//input,则表示 从当前节点的任意位置查找input
  • [n] 获取查到的第n个标签
    比如如果上面使用//div查到2个,如果只想要第一个,可以这么写//n[1],注意这里没有下标0的场景,如果想要获取最后一个可以直接使用//div[lastIO],这样就能获取到最后一个div了,
    此外还可以增加别的条件,//div[@style],表示查找拥有属性style的div标签,如果再细点还可以,
    //div[@style=‘height:100%’],表示查找属性值为指定值的元素
    • 表示匹配任何元素
      /html/*,则表示查找html下的所有元素
  • @* 匹配元素的属性
    @ //div/@* 上面示例则表示匹配到了2个div
  • text() 获取标签内容
    注意lxml获取标签后不会默认拿文本,而是拿的标签,如果想要取文本必须使用text(),
    如://div/input/text(),则表示获取所有input的文本内容。

二、爬取数据

下面是爬取http://xzqh.mca.gov.cn/statistics/2022.html,行政区划网页的示例
注意:这个网站没有放爬取规范,笔者才弄得,如果有禁止爬取的声明,最好不要处理,有一定法律风险。

整体示例代码:

importrequestsashttpfromlxmlimporthtml resp=http.get("http://xzqh.mca.gov.cn/statistics/2022.html")# 注意网页编码,有的并不是utf-8,不是的话就得指定resp.encoding='gb2312'# 获取html的格式化对象document=html.fromstring(resp.text)# 意思是全局找带有属性colspan='2'的td标签,在找下面的div,获取他们的内容str_list=document.xpath("//td[@colspan='2']/div/text()")forcityinstr_list:print(city)

可以发现使用python编写爬虫其实很简单,相当于其他语言来说很轻量

注意:

  • Xpath的路径,可以通过如下方式快速获取
    f12,然后选中元素,点击图中想要获取的内容

    右键获取如下,选择复制XPath,或者复制完整XPath都是可以快速获取路径的
http://www.cnnetsun.cn/news/4330646.html

相关文章:

  • 2026秋招Java面试:Spring、JVM、MySQL、Redis、Netty五条主线梳理
  • 树莓派人脸识别门禁系统实战:OpenCV+PyQt5从零搭建
  • Python GUI编程:Tkinter打造桌面应用
  • Java面试攻略:八股文与项目场景题如何结合准备
  • Harness Engineering:给AI这匹烈马套上缰绳
  • 阿克曼小车纯跟踪算法MATLAB仿真完整实现
  • HyperMesh有限元前处理核心能力详解:几何清理、网格划分与质量检查
  • SpringBoot水果蔬菜商城毕设项目从调试到部署全攻略
  • 京东Java校招笔试题解析:从集合框架到JVM内存的考点复盘
  • SpringBoot+WebSocket轻量级聊天室:握手、Session管理与Nginx部署全拆解
  • DeepSeek V4 Pro与Grok 4.6在Cursor中的选型与避坑指南
  • AI编程利器:用Skill自动生成流程图,告别手搓
  • 基于Grok API构建代购Bot:Function Calling与Link授权实战
  • 基于内容推荐算法的音乐推荐系统设计与实现
  • Google I/O 2026全景解读:Gemini 3.5 Flash、Omni与Spark引爆智能体时代
  • 从零搭建短链接系统:Spring Boot + Vue3实现链接生命周期管理与防失效监控
  • 3D打印模型开发:从“开发中”到可发布的关键流程
  • OpenRouter大模型API网关:从Key配置到故障排查全指南
  • 阿里Qoder实测:功能、对比Trae/Cursor与自定义模型接入
  • 开发者贡献识别系统设计:从提交计数到事件驱动的效能度量
  • 阿里云低价服务器从0到1:初始化、安全加固与网站部署
  • 从零搭建本地离线工具箱:隐私安全与Python实用脚本实践
  • HarmonyOS 多设备短视频开发 : 07 — ArkUI 组件化设计:从公共组件库到业务模块复用
  • Cohere企业级AI实战:RAG、多语言与API接入指南
  • Gurobi 与 Jupyter/Colab 环境配置及优化建模案例实战
  • 第二十八集雾版制作全流程:从版本管理到发布检查要点
  • claude-video参数速查表:watch.py全部8个选项的完整参考
  • phpcolor v4.0:轻量级PHP贴吧社区程序重构与实战解析
  • 360春招PHP笔试客观题复盘:从考点陷阱到安全直觉
  • Upscayl:免费开源AI图像放大工具,3步出4倍高清图