# 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('\n','').replace(' ','')#將換行與空格分別取代 print(content2) # 輸出結果:我左青龍,右白虎,上朱雀,下玄武.老牛在當中,龍頭在胸口.