假設我爬取了這樣的一個html網頁,前面的前端代碼以下所示:css
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>OK資源採集-最新影視資源大全</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="OK資源採集-最新影視資源大全" /> <meta name="description" content="OK資源採集-最新影視資源大全" /> <script>var SitePath='/',SiteAid='10',SiteTid='',SiteId='';</script> <link href="/template/okokzy/css/home.css" rel="stylesheet" type="text/css" /> <script src="/template/okokzy/js/jquery_ldg.js"></script> <script src="/template/okokzy/js/jquery.zclip.min.js"></script> <script src="/template/okokzy/js/ldg.js"></script> <script src="/js/jq/jquery.lazyload.js"></script> <script src="/template/okokzy/js/home.js"></script> </head>
咱們想要獲取其中的script標籤後面的內容,所以咱們能夠使用Xpath來獲取,假設咱們想要得到第一個script標籤處的值value,就能夠使用表達式:html
Xpath(/html/head/script/text())[0]
這個表達式的含義是輸出在html下的head下的第一個script標籤處的文字,由於咱們前面的代碼:前端
Xpath(/html/head/script/text())
會輸出全部以script開頭的對象,所以加上[0]限定爲第一個script後面的文字。jquery
所以輸出爲:cookie
var SitePath='/',SiteAid='10',SiteTid='',SiteId='';
在Xpath表達式當中'//' 表示前面的省略不計,直接跳過兩層或者多層拿到後面的標籤中所對應的對象。post
假設咱們想要爬取font標籤當中具有某個color屬性的文字內容,以下所示:ui
<font color="#000000">OK資源站 </font><font color="#FF0000">HTTPS</font><font color="#000000"> 站請進入>>></font></a></font><font size=
font這個標籤以後顯然會有不少不一樣的color,可是咱們只想要這裏color爲「#000000」後面的文字內容,所以咱們使用這樣的表達式:google
r_two=tree.xpath('//font[@color="#000000"]/text()')
這樣就餓能夠了。總體的代碼以下所示:url
import requests from lxml import etree post_url = 'https://www.okzy10.com/' #cookie='lastCity=100010000; __zp_stoken__=ce26bZyQcLhoDK1A7M0RzPzMQEDJzHHpAQCJkUHtpSSFDSCkNeko0HBZxSywqeBxlHh8PIE4CLwgTSWsacwcdbEMNUBBzE2APASkfAktgOFskSn9HCTgkLmE7GFxecS8MGE4FGX99IHdsQHV5YQ%3D%3D; __c=1610949395; __g=-; __l=l=%2Fwww.zhipin.com%2F&r=https%3A%2F%2Fwww.google.com%2F&g=&s=3&friend_source=0&s=3&friend_source=0; __a=13532184.1600828409.1610683874.1610949395.205.23.3.205; Hm_lvt_194df3105ad7148dcf2b98a91b5e727a=1610082805,1610683875,1610949395,1610949407; Hm_lpvt_194df3105ad7148dcf2b98a91b5e727a=1610949407' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36', } #解析本地的html #使用etree.parse #解析網頁上的html #使用etree.HTML req = requests.get(post_url,headers=headers) #print(req.text) with open('ok_resource.html','w',encoding='utf-8') as fp: fp.write(req.text) #使用xpath表達式對etree對象進行解析 parser = etree.HTMLParser(encoding="utf-8") tree=etree.parse('ok_resource.html',parser=parser) r=tree.xpath('/html/head/script/text()')[0] r_two=tree.xpath('//font[@color="#000000"]/text()') print(r) print(r_two)