爬虫中xpath的特殊用法
Xpath之starts-with(@属性名称,属性字符串相同部分) 以相同的字符开头的用法
在做爬虫时解析html的源码时候可能会遇见以下这种标签,
<div id="test-1"> 需要的内容1</div>
<div id="test-2"> 需要的内容2</div>
<div id="testfault"> 需要的内容3</div>
我们发现这种标签都是id属性名称相差了一个数字或其他的字符串而已,在提取数据时完全没必要写三次xpath表达式.可以直接用以下这种方法去提取数据,
selector = etree.HTML("带解析的HTML字符串源码")
content = selector.xpath('//div[starts-with(@id,"test")]/text()')
Xpath之xpath().string(.)
标签嵌套(如下情况)
<!doctype html>
<html lang="en">
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="test3">
我在左边.
<span id="tiger">
我在右边.
<ul>我在上边
<li>我在下边</li>
</ul>
我在中间
</span>
我在这儿
</div>
</body>
</html>
类似这种的标签结构可以使用以下这种方式去提取数据
data = selector.xpath('//div[@id="test3"]')[0]
info = data.xpath('string(.)')
content_2 = info.replace('\n',' ').replace(' ',' ')
print(content_2)
爬虫中xpath的特殊用法的更多相关文章
- python爬虫中XPath和lxml解析库
什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...
- 爬虫中Xpath有时候是无效的
http://www.cnblogs.com/lchzls/p/6282790.html给出了两种方案
- 网络爬虫之Xpath用法汇总
众所周知,在设计爬虫时,最麻烦的一步就是对网页元素进行分析,目前流行的网页元素获取的工具有BeautifulSoup,lxml等,而据我使用的体验而言,Scrapy的元素选择器Xpath(结合正则表达 ...
- 爬虫 selenium+Xpath 爬取动态js页面元素内容
介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如 ...
- Python爬虫之xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- 3 爬虫解析 Xpath 和 BeautifulSoup
1.正则表达式 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [-] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w ...
- Python爬虫Urllib库的高级用法
Python爬虫Urllib库的高级用法 设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Head ...
- 爬虫常用Xpath和CSS3选择器对比
爬虫常用Xpath和CSS3选择器对比 1. 简介 CSS是来配合HTML工作的,和Xpath对比起来,CSS选择器通常都比较短小,但是功能不够强大.CSS中的空白符' '和Xpath的'//'都表示 ...
- 爬虫中之Requests 模块的进阶
requests进阶内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 引入 有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个 ...
随机推荐
- win7系统64位配置Oracle 的ODBC数据源
1.安装oracle客户端 2.在如下路径启动odbc数据源 3.选择系统DSN-添加,选择oracle驱动 4.填写信息如下,填写数据源名称等信息后输入用户名和密码测试连接
- Elasticsearch学习笔记(十)批量查询mget、批量增删改bulk
一.批量查询 mget GET /_mget { "docs":[ { "_index":" ...
- Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
通过前几篇文章,jmeter+ant+jenkins自动化持续构建的测试平台基本成型.既然要自动化平台,最基本的肯定要实现不经过人工干预,平台会在特定的条件下自动运行测试脚本,并在脚本运行结束后,发送 ...
- 搭建MHA测试
搭建MHA: 手工切换: masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_maste ...
- 理解 JavaScript 中的 this
前言 理解this是我们要深入理解 JavaScript 中必不可少的一个步骤,同时只有理解了 this,你才能更加清晰地写出与自己预期一致的 JavaScript 代码. 本文是这系列的第三篇,往期 ...
- python多进程multiprocessing模块中Queue的妙用
最近的部门RPA项目中,小爬为了提升爬虫性能,使用了Python中的多进程(multiprocessing)技术,里面需要用到进程锁Lock,用到进程池Pool,同时利用map方法一次构造多个proc ...
- Java之.jdk卸载-Linux
Java之.jdk卸载-Linux 卸载Linux自带的jdk 首先查询: # rpm -qa | grep jdk 使用root账户,进行卸载: # yum -y remove xxxxxxxx( ...
- 北京大学Cousera学习笔记--3-计算导论与C语言基础-第一讲.计算机的基本原理-计算机怎么计算-数的二进制
思考问题 1.“数”在计算机中是如何表示的? 2.逻辑上“数”是怎么运算的? 3.物理上“数”的计算是怎么实现的? 从图灵机计算问题得出: 1.字母表中的符号越多(几进制),读入移动次数减少,但程序数 ...
- 用requests库和BeautifulSoup4库爬取新闻列表
import requests from bs4 import BeautifulSoup url='http://news.gzcc.cn/html/xiaoyuanxinwen/' res=req ...
- puppeteer(四)常见问题——部分元素无法操作,代码没任何问题。
前言 最近写了一个小例子,但是一个page.click无论如何也不能正常操作,语法这么简单不可能有错.于是找原因,浏览器的问题吗?各种开发环境切换,nodejs版本换到较老的版本,npm版本切换,最后 ...