# xpath的使用 安装lxml from lxml import etree Selector = etree.HTML(网页代码) Selector.xpath(一段神奇的代码) xpath的一般用法 //定位根节点 /表示往下层寻找 /text()提取文本内容 /@***提取属性 例: response.xpath('//ul[@id="useful"]/li/text()') 中括号[]表示限定ul的条件,这里表示id为useful的ul标签 xpath的特殊用法 第一种情况:以相同的字符开始的情况,提取以下三个内容难道要写三次? 解决方法:用starts-with(@属性名称,属性相同的部分) 举例: <div id='test-1'>需要的内容1</div> <div id='test-2'>需要的内容2</div> <div id='test-fault'>需要的内容3</div> 方案:response.xpath("//div[starts-with(@id, 'test')]/text()") 第二种情况:标签套标签,下面的情况如何提取成一句完整的话?div套着的标签如何提取? 解决方法:string(.) 举例: html = ''' <div id="class3"> 我左青龙, <span id='tiger'> 右白虎, <ul>上朱雀, <li>下玄武.</li> </ul> 老牛在当中, </span> 龙头在胸口. </div> ''' # 方案: from lxml import etree selector = etree.HTML(html) data = selector.xpath('//div[@id="class3"]')[0] info = data.xpath('string(.)')#实际上是去除了div中间的其他多余标签 print(info) content2=info.replace(' ','').replace(' ','')#将换行与空格分别取代 print(content2) # 输出结果:我左青龙,右白虎,上朱雀,下玄武.老牛在当中,龙头在胸口.