日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用

發布時間:2023/12/9 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄:

1.XPath

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。它使用路徑表達式來選取 XML 文檔中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。

XPath語法

2.XPath在python中的應用xpath在Python中有一個第三方庫,支持~ lxml

注意:不要直接使用pip install lxml去安裝~直接安裝很容易安裝一個空殼!

安裝pip,主要參考博客: 在shell中輸入import pip; print(pip.pep425tags.get_supported())可以獲取到pip支持的文件名還有版本xpath的安裝

通過wheel方式安裝

下載對應的wheel文件【和Python版本對應的】

安裝wheel插件 :python2 -m pip install wheel

根據下載的本地文件安裝lxml:切換到whl文件所在的路徑,進行安裝

python2 -m pip install lxml-3.8.0-cp27-none-win32.whlwheel名一定要跟pip支持的文件名和版本符合

xpath的使用

獲取文本內容用 text()

獲取注釋用 comment()

獲取其它任何屬性用@xx,如 @href

@src

@value

3.XPath中的text()和string()區別

1.XPath中的text()和string()本質區別text()是一個node test,而string()是一個函數,data()是一個函數且可以保留數據類型。此外,還有點號(.)表示當前節點。

2.XML例子:

_知幾

用例舉例text()book/author/text()

string()book/author/string()

data()book/author/data()

.book/author/.

3.特殊用例

XML例子:

pythondjango爬蟲

20

0.8

text() 經常在XPath表達式的最后看到text(),它僅僅返回所指元素的文本內容。let $x := book/author/text() return $x

返回的結果是python 爬蟲,其中的django不屬于author直接的節點內容。string() string()函數會得到所指元素的所有節點文本內容,這些文本講會被拼接成一個字符串。let $x := book/author/string() return $x

返回的內容是python django 爬蟲。data()

大多數時候,data()函數和string()函數通用,而且不建議經常使用data()函數,有數據表明,該函數會影響XPath的性能。let $x := book/pricing/string() return $x

返回的是200.8

let $x := book/pricing/data() return $x

這樣將返回分開的20和0.8,他們的類型并不是字符串而是>xs:anyAtomicType,于是就可以使用數學函數做一定操作。

let $x := book/pricing/price/data() let $y := book/pricing/discount/data() return $x*$y

比如上面這個例子,就只能使用data(),不能使用text()或string(),因為XPath不支持字符串做數學運算。

text()不是函數,XML結構的細微變化,可能會使得結果與預期不符,應該盡量少用,data()作為特殊用途的函數,可能會出現性能問題,如無特殊需要盡量不用,string()函數可以滿足大部分的需求。

4.爬取誅仙前50章內容

主要分三個步驟:

(1)分析小說網址構成;

(2)獲取網頁,并分離出小說章節名和章節內容;

(3)寫入txt文檔。

代碼操作:# -*- coding:utf-8 -*-

import urllib,urllib2,re

from lxml import etree

#定義函數,爬取對應的數據

def getText(url,file_name):

print('開始爬取第%s章的內容'%file_name)

#偽裝請求頭

my_headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36',

}

request = urllib2.Request(url,headers=my_headers)

content = urllib2.urlopen(request).read()

return content

#定義函數,保存爬取到的數據

def save(content):

xml = etree.HTML(content)

datas = xml.xpath('/html/body/div[@id="main"]/h1 | /html/body/div[@id="main"]/p')

data = datas[2].xpath('string(.)').encode('utf-8')

name = datas[0].xpath('string(.)')

print name

print('第%s章的內容爬取完成' % file_name)

with open('txt/%s'%name+'.txt', 'wb') as f:

f.write(data)

#定義主程序接口

if __name__ == '__main__':

x=41277

while x

url = 'http://www.ty2016.net/net/zhuxian/'+str(x)+'.html'

x+=1

file_name = str(x-41278)

try:

content = getText(url,file_name)

save(content)

except Exception,a:

print a

從本地可以看到已經爬取到相關內容

注解:Xpath的獲取

總結

以上是生活随笔為你收集整理的python 安装xpath_Python网络爬虫(四)- XPath1.XPath2.XPath在python中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。