xpath 取标签下所有文字内容_【IT专家】解决:xpath取出指定多标签内所有文字text...

解决:

xpath

取出指定多标签内所有文字

text

2016/11/14 0

Python 2.7 Pycharm 5.0.3

问题

再写一个

markdown

自动引用的小脚本的时候新出现的问题,也就是利用

xpath

取出字符串的问题,记录一下

取出如下字符串

我要取出

mrlevo520

的内容,怎么取呢,很多方法,

bs4

也可以,正则也可以,动

selenium

也可以,这次我想尝试用

xpath

来做,一则是为了和

selenium

接轨,

xpath

的确很强大,二来是

firefox

提供

firebug

插件,可以直接定位你需要内容的标

签,一步到位简直完美,不多说,上程序。

import

urllib2from

lxml

import

etreecrawl_url

=

“jianshu/p/e2c4ebd2eeb3”req

=

urllib2.Request(crawl_url)req.add_header(‘User-Agent’,’Mozilla/5.0

(Windows

NT

10.0;

WOW64)

AppleWebKit/537.36

(KHTML,

like

Gecko)

Chrome/45.0.2454.101

Safari/537.36’)response

=

urllib2.urlopen(req)html

=

response.read()selector

=

etree.HTML(html)#

核心部分

bloger

=

selector.xpath(“//a[@

]”)info

=

bloger[0].xpath(‘string(.)’).encode(‘utf-8’).strip()print info #

打印出

mrlevo

网上的方法

ok

,我们来试下,用小哥改进的方法取出上面那个标签

#

修改

-

核心部分,其余保持一样

bloger

=

selector.xpath(“//a[@

]”)print

bloger[0].xpath(‘string(.)’).extract()[0]ok

,又报错了

AttributeError: ‘_ElementStringResult’ object has no attribute ‘extract’

查看类型,如小

哥所说,的确是

list

,再查看列表

print

type(bloger)

#

listprint

type(bloger[0])

#’lxml.etree._Element’print

(bloger[0])

#

Element

a

at

0x36e9208

#

ok

,这要取出

bloger[0]

里面的字符串就可以了再次修改代

码,去掉

extract()

,并去掉周围空格

#

核心部分

bloger

=

selector.xpath(“//a[@

]”)print

bloger[0].xpath(‘string(.)’).strip()#

ok

,取值成功

对于小哥的例子,取出来之后字符串片段使用连接字符串

(join)

就可

以了

(

可能都不需要

join

,我没试过

)


版权声明:本文为weixin_36342477原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。