xpath可以xpath获取th标签个数到所有的标签,但是打印文本的时候数量有很大差别

scrapy 中使用 Selector 的 xpath 表达式如何选择具有相同 html 标签的元素的内容 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
scrapy 中使用 Selector 的 xpath 表达式如何选择具有相同 html 标签的元素的内容
21:37:39 +08:00 · 2754 次点击
如: 我想获得该页面产品简介的内容,但是产品简介所嵌套的div标签并没有任何的id或者class,它的平级还有好几个并列的div,请问xpath表达式是否可以在有几个相同标签的情况下获取到第N个标签元素的写法?或者这个问题是否还有其他方法可以解决。谢谢?
4 回复 &| &直到
16:25:55 +08:00
& & 22:52:19 +08:00
目前采用的方法是获取所有相同的标签然后遍历,有更简单的方法么
& & 10:11:31 +08:00
Xpath取到的是节点列表,也就说是个list,直接用下标取就行了,比如如果是第三个就是div[2]
& & 10:40:43 +08:00 via iPad
@ 如果有些内容要有些不要呢?我爬下来会两行空白一行文字这样子循环
& & 16:25:55 +08:00
@ 用string类自带的方法strip()
\nabc'.strip()
'abc'
& · & 786 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 18ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47? Do have faith in what you're doing.当前位置:
(python)Xpath如何提取html标签(HTML标签和内容)
猜你喜欢的文章
(python)Xpath如何提取html标签(HTML标签和内容)
来源:网络整理&&&&&时间: 12:26:13&&&&&关键词:
关于网友提出的“ (python)Xpath如何提取html标签(HTML标签和内容)”问题疑问,本网通过在网上对“ (python)Xpath如何提取html标签(HTML标签和内容)”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: (python)Xpath如何提取html标签(HTML标签和内容)
描述:&div&
&td&Row value 1&/td&
&td&Row value 2&/td&
&td&Row value 3&/td&
&td&Row value 4&/td&
&td&Row value 1&/td&
&td&Row value 1&/td&
&/div&如何把table标签提取出来,结果如下:&table&
&td&Row value 1&/td&
&td&Row value 2&/td&
&td&Row value 3&/td&
&td&Row value 4&/td&
&td&Row value 1&/td&
&td&Row value 1&/td&
&/table&代码如下:selector = etree.HTML(html)
content = selector.xpath('//div/table')[0]
print(content)
# &Element div at 0x1bce7463548&
# 即:如何将Element对象转成str类型解决方案1:BeautifulSoup的find解决方案2:from lxml.html import fromstring, tostring
# fromstring返回一个HtmlElement对象
# selector = fromstring(html)
selector = etree.HTML(html)
content = selector.xpath('//div/table')[0]
print(content)
# tostring方法即可返回原始html标签
original_html = tostring(content)
解决方案3:[div/table]就行吧貌似解决方案4:from lxml import etree
div = etree.HTML(html)
table = div.xpath('//div/table')[0]
content = etree.tostring(table,print_pretty=True, method='html')
# 转为字符串
以上介绍了“ (python)Xpath如何提取html标签(HTML标签和内容)”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4510100.html
上一篇: 下一篇:用 xpath 获取 p 标签所有文本内容, a 标签内容处理问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
用 xpath 获取 p 标签所有文本内容, a 标签内容处理问题
15:56:41 +08:00 · 5772 次点击
完整链接:
欲处理文本
&p class="paragraph"&该公司表示,&a rel="nofollow" target="_blank"
href="http://www.thepaper.cn/newsDetail_forward_1625731"&今年 2 月&/a&
,中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。&/p&
xpath 语法
//*[@id="content"]/p/text() | //*[@id="content"]/p/a/text()
得到的结果是 list :
['该公司表示,',
'今年 2 月',
',中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。']
但我想要的结果是:
['该公司表示,今年 2 月,中国新闻网站澎湃报道称,孟德楷已与中国的几个城市签署项目协议,迪士尼因此展开调查。']
查来半天没找到解决的办法,无奈做回伸手党,各位有什么高见呢?
PS :要用 xpath 语法完成,不是获取结束后,再用代码处理成一个元素
7 回复 &| &直到
14:17:38 +08:00
& & 16:18:50 +08:00
//*[@id=&content&]/p[a]/string-join(text())
& & 16:19:32 +08:00
我也是刚 google 的,这个网页好像有点用处:
& & 16:53:48 +08:00
@ 表达式无效唉
lxml.etree.XPathEvalError: Invalid expression
& & 16:58:41 +08:00
@ 这我就不知道了。。。我是在
这里测试通过的
& & 18:16:44 +08:00
@ 不管怎么样,得到了一种新思路,谢谢你~
& & 00:22:54 +08:00
可能你对 xpath 的行为理解有点错误吧
正确的表达式一个就足够了 //*[@id=&content&]/p
如果你 select 的标的是 nodelist 那么得到的是所有 p 标签
如果你 select 的标的是 string (默认),就已经是所有文本 join 之后的结果
所以你应该修正你的 select 标的
& & 14:17:38 +08:00 via Android
@ 感谢您,现在才看到。上次已经解决了,直接用
//*[@id=&content&]/p//text()
& · & 783 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 17ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47? Do have faith in what you're doing.用户“九条命得小猫咪”对问题“使用xpath获取特定表是可能的?”的回答 - 问答 - 云+社区 - 腾讯云云+社区首页使用xpath和table标签获取特定的表如下所示:&table border=&0& cellspacing=&1& cellpadding=&1& class=&bigborder& width=&1050&&
*以上特定表格标签可以在该URL中找到import requests
from lxml import html
req = requests.get(&http://www.hkjc.com/english/racing/OtherHorse.asp?HorseNo=V032&)
raw_html = html.fromstring(req.text)
tr = raw_html.xpath('//*[@id=&innerContent&]/table/tbody/tr/td[2]/form/table[4]//tr/text()')
print(&&.join([x.replace(&\t&, &&).replace(&\r\n&,&&).strip() for x in tr]))
输出: None预期输出:491 12 20/03/2016 ST / &Turf& / &A
& 1200 G 4 12 052 C S Shum K K
Chiong 9-1/4 92 112 8
12 1.11.59 1067 TT/B
456 09 06/03/2016 ST / &Turf& / &C
& 1200 G 4 8 052 C S Shum G
Lerena 8-3/4 16 126 9
9 1.11.42 1078 TT1/B1
写回答邀请回答 天前使用xpath获取特定表是可能的?写回答 天前HTML中不存在具有值“innerContent”的属性ID,你在xpath中使用它。你可以找回可从中提取字符串的tr元素列表。它的方式是寻找tr标签中不存在的文本元素。你可以得到像这样的所有线。import requests
from lxml import html
req = requests.get(&http://www.hkjc.com/english/racing/OtherHorse.asp?HorseNo=V032&)
raw_html = html.fromstring(req.text)
lines = raw_html.xpath('//form/table[4]/tr')
for line in lines:
print(re.sub( '\s+', ' ', line.xpath(&string()&).replace(&\t&,& &).replace(&\r&,& &).replace(&\n&,& &)).strip())
RaceIndex Pla. Date RC/Track/Course Dist. G RaceClass Dr Rtg. Trainer Jockey LBW Win Odds Act.Wt. RunningPosition Finish Time Declar.Horse Wt. Gear VideoReplay
17/18 Season
264 06 13/12/2017 HV / &Turf& / &C & 1650 G 5 2 013 C W Chang W M Lai 6-1/2 15 113 4 4 3 6 1.41.76 1115 TT/B-
181 13 11/11/2017 ST / &Turf& / &A & 1400 GF 5 8 016 C W Chang W M Lai 6 89 113 13 13 12 13 1.23.58 1109 TT/B2
138 09 25/10/2017 HV / &Turf& / &C+3 & 1650 GF 5 10 018 C W Chang W M Lai 3-1/2 37 113 10 11 10 9 1.40.77 1100 TT
068 11 27/09/2017 HV / &Turf& / &C+3 & 1650 GF 5 7 020 C W Chang W M Lai 8 24 113 4 5 5 11 1.41.93 1102 TT
031 04 13/09/2017 HV / &Turf& / &B & 1650 GF 5 7 020 C W Chang W M Lai 1-3/4 45 114 7 8 7 4 1.41.43 1099 TT/B-
013 11 06/09/2017 HV / &Turf& / &A & 1650 G 5 11 020 C W Chang W M Lai 8-1/2 16 113 11 11 11 11 1.42.61 1110 TT/B
16/17 Season
707 02 07/06/2017 HV / &Turf& / &A & 1650 G 5 4 016 C W Chang W M Lai 2 31 113 10 10 8 2 1.40.41 1084 TT/B
589 12 23/04/2017 ST / &AWT& / &-& 1200 GD 5 12 020 C W Chang W M Lai 12 39 113 11 12 12 1.11.33 1082 TT/CP-/B2
481 10 12/03/2017 ST / &AWT& / &-& 1650 GD 5 13 023 C S Shum H T Mo 12-1/2 24 108 14 14 13 10 1.40.66 1068 TT/CP
390 13 05/02/2017 ST / &Turf& / &C & 1400 G 5 8 026 C S Shum H T Mo 5-3/4 14 111 11 11 12 13 1.23.93 1074 TT/CP
344 04 18/01/2017 ST / &AWT& / &-& 1200 GD 5 12 028 C S Shum H T Mo 5-1/2 60 112 11 11 4 1.10.46 1077 TT/B-/CP1
286 10 27/12/2016 ST / &Turf& / &A+3 & 1200 G 5 3 030 C S Shum O Murphy 7 11 123 5 5 10 1.12.18 1075 TT/B
231 09 04/12/2016 ST / &AWT& / &-& 1200 GD 5 6 033 C S Shum Z Purton 4 19 126 6 7 9 1.09.65 1066 TT/B
223 11 30/11/2016 HV / &Turf& / &A & 1200 G 5 8 035 C S Shum N Rawiller 5 10 130 10 11 11 1.11.47 1062 TT/B
213 07 27/11/2016 ST / &Turf& / &C & 1400 G 5 6 035 C S Shum Z Purton 2-1/2 11 128 6 7 6 7 1.23.50 1079 TT/B
103 14 16/10/2016 ST / &Turf& / &C & 1600 GF 5 14 035 C S Shum N Rawiller 25-3/4 11 128 1 2 6 14 1.39.40 1078 TT/B
049 07 25/09/2016 ST / &Turf& / &A & 1400 GF 5 9 036 C S Shum N Rawiller 1-3/4 11 129 7 9 9 7 1.23.23 1077 TT/B
001 05 03/09/2016 ST / &Turf& / &B & 1200 G 5 7 036 C S Shum N Rawiller 3-1/2 70 125 9 9 5 1.09.89 1086 TT/B
15/16 Season
639 12 14/05/2016 ST / &AWT& / &-& 1650 WS 4 8 042 C S Shum H N Wong 20-1/2 99 108 6 5 9 12 1.41.86 1043 TT/B
605 13 01/05/2016 ST / &Turf& / &B & 1400 G 4 10 046 C S Shum M L Yeung 8-1/4 99 117 6 4 5 13 1.24.19 1053 TT/B
527 09 03/04/2016 ST / &Turf& / &B+2 & 1400 G 4 13 049 C S Shum C Schofield 5-3/4 99 122 12 13 12 9 1.23.16 1065 TT/B
491 12 20/03/2016 ST / &Turf& / &A & 1200 G 4 12 052 C S Shum K K Chiong 9-1/4 92 112 8 11 12 1.11.59 1067 TT/B
456 09 06/03/2016 ST / &Turf& / &C & 1200 G 4 8 052 C S Shum G Lerena 8-3/4 16 126 9 10 9 1.11.42 1078 TT1/B1
回答过的其他问题同地域可以直接使用内网,不同地域的话可以使用和 CDB 同地域的跳板机器,也可以使用外网地址访问并配置 CDB 的安全组规则。只是不建议使用外网地址,不是不能用的哦。虽然可能在2018还不能商用,但我还是要说,未来是量子计算机的!
量子计算机是指利用量子相干叠加原理,理论上具有超快的并行计算和模拟能力的计算机。如果将传统计算机比作自行车,量子计算机就好比飞机。使用亿亿次的“天河二号”超级计算机求解一个亿亿亿变量的方程组,所需时间为100年。而...... JSON,不是 jason。旧版支持 JSON,最新版只支持 XML。https://cloud.tencent.com/document/product/436/6053现阶段的人工智能定义还是不太清晰的(人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。【百度百科】)。根据这个定义,消费级人工智能产品分以下几大类(...... CVM 购买页截图:
如果希望更换,则需要先等待 CVM 接近到期,再使用 自定义镜像(系统盘为本地盘) 或 快照(系统盘为云硬盘)将数据迁移到新购买的私有网络环境下的 CVM。... 微软 CEO Nadella 其实在之前谈到了微软在过去几年中如何成为 GitHub 上最活跃的组织,提交了超过 200 万次的项目 commits 和 updates ,并表示微软正在全身心地投入开源。
但是这样也并不能让开发者重拾对微软的信心
因为 从始至终,微软对开源的嫉...... 暂无个人信息扫描二维码扫描关注云+社区Webdriver定位之iframe中的元素定位
最近正在进行webdriver的web级自动化测试代码的编写,遇到一个问题:页面有三个标签,单击一个标签打开一页,要对第二个标签打开的页面进行定位操作,可是总是定位不到。查看一下代码,发现这个标签打开的是一个新页面,在iframe中嵌套着呢,于是在网上搜了一下相关的定位方法。
例如,现有HTML代码如下:
main.html&&&
&&/span&html&&&
&&&&&&/span&head&&&
&&&&&&&&&&/span&title&FrameTest&/&/span&title&&&
&&&&&/&/span&head&&&
&&&&&&/span&body&&&
&&&&&&/span&div&id&=&"id1"&this&is&a&div!&/&/span&div&&&
&&&&&&&&&&/span&iframe&id&=&"frame1"&&frameborder="0"&scrolling="no"&style="left:0;position:"&src&=&"frame.html"&&/&/span&iframe&&&
&&&&&/&/span&body&&&
&/&/span&html&&&&
frame.html&
&&/span&html&&&
&&&&&&/span&head&&&
&&&&&&&&&&/span&title&this&is&a&frame!&/&/span&title&&&
&&&&&/&/span&head&&&
&&&&&&/span&body&&&
&&&&&&/span&div&id&=&"div1"&this&is&a&div,too!&/&/span&div&&&
&&&&&&/span&label&input:&/&/span&label&&&
&&&&&&/span&input&id&=&"input1"&&/&/span&input&&&
&&&&&/&/span&body&&&
&/&/span&html&
1.iFrame有ID 或者 name的情况
//进入id="frame1"的frame中,定位id="div1"的div和id="input1"的输入框。
dr.switchTo().frame("frame1");
dr.findElement(By.id("div1"));
dr.findElement(By.id("input1"))
2.如果一个iFrame既没有id,也没有name,通用情况
// 定位frame位置,并选取frame
WebElement frame=driver.findElement(By.xpath(
"/html/body/div[2]/div[8]/div[2]/div[3]/div/div[2]/div/iframe"
driver.switchTo().frame(frame);
3.跳出iFrame
//跳出frame,进入重新定位id="id1"的div
dr.switchTo().defaultContent();
dr.findElement(By.id("id1"))
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 xpath获取文本内容 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信