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

记录lxml中的etree、xpath来定位、爬取元素

有如下一个网页,想要抓取其中内容,主要是IP Address和Port,使用python实现。

用F12看一下网页源代码,对应上图表格内容的部分如下:

 

使用python和lxml来定位爬取。

首先要安装lxml,如下命令(可以在pycharm项目的Terminal中运行):

pip3 install lxml

实现代码:

from lxml import etree
import requestsurl = 'https://www.example.com'
r = requests.get(url)
result = r.text
html = etree.HTML(result)rows = html.xpath(".//div[@class='table-responsive fpl-list']/table/tbody/tr[position()>0]")proxy_list = []
for row in rows:td_list1 = row.xpath('./td[1]')td_list2 = row.xpath('./td[2]')ip = td_list1[0].text.replace(' ','').replace('\t','').replace('\n','')port = td_list2[0].text.replace(' ','').replace('\t','').replace('\n','')web_proxy = {'ip': ip, 'port': port, 'types': 0, 'protocol': '0', 'country': '0', 'area': '0', 'speed': 100}proxy_list.append(web_proxy)print(proxy_list

说明:

在HTML中,tr、td、th是用于构建表格的核心标签‌:tr(Table Row)定义表格行,td(Table Data)定义标准数据单元格,th(Table Header)定义表头单元格。‌‌

结合上述代码,rows即是获取的表格中的所有行。

然后针对每一行进行操作。从每一行中,定位并获取需要的单元格的文本内容(此行第一列的单元格就是td[1],第二列就是td[2],使用.text获取其文本内容,注意:使用row.xpath获取出的是一个列表,需要加一个[0]来成为单个元素)。

http://www.xdnf.cn/news/14228.html

相关文章:

  • 清理 Docker 容器日志文件方法
  • YOLOv3 训练与推理流程详解-结合真实的数据样例进行模拟
  • 19.vue.js的style的lang=scss、less(2)
  • 荒原之梦:致力于考研数学实战
  • 大模型——Dify 与 Browser-use 结合使用
  • Spring AI Alibaba Graph 实践
  • 简历模板2——数据挖掘工程师5年经验
  • DataX Hive写插件深度解析:从数据写入到Hive表关联实战
  • 【Flutter】Widget、Element和Render的关系-Flutter三棵树
  • 写出优秀的 Git 提交信息:一份详尽指南(Angular 风格)
  • CS144 lab0: warmup
  • 嵌入式 STM32 开发问题:烧录 STM32CubeMX 创建的 Keil 程序没有反应
  • Flutter动画与交互:打造流畅用户体验的完整指南
  • 基于GNU Radio Companion搭建的AM信号实验
  • 项目拓展-Apache对象池,对象池思想结合ThreadLocal复用日志对象
  • 前端面试专栏-主流框架:7. React核心概念(组件、JSX、状态管理)
  • JAVA-了解网络编程
  • QNAP威联通NAS配置SFTP与内网穿透技术实现远程文件访问
  • Docker 部署 RomM 指南:打造私有戏库与即点即玩系统
  • 31-Oracle 23 ai-Unrestrict Parallel DML(无限制并行DML)
  • 支付宝转账怎么测试?
  • 《B4A安卓开发实战秘籍》
  • logger2js - JavaScript日志与调试工具库
  • 静态库和共享库(动态库)的编译链接
  • Abaqus控制网格的方法
  • 测试开发-正交法
  • CRASIM输入输出变量中英文对照
  • 如何打造沉浸式文件操作体验
  • linux用反汇编分析访问空指针问题
  • Springboot短视频推荐系统b9wc1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。