python網路爬蟲 資料提取xpath(4)

2021-10-25 17:56:08 字數 2630 閱讀 6424

xpath,即為xml路徑語言(xmlpathlanguage),它是一種用來確定xml文件中某部分位置的語言。

xml和html異同:

都是玩標籤,標籤中都有屬性

xml必須為雙標籤,html單雙都可

xml標籤為自定義,html標籤都為內建

xpath 使用路徑表示式在 xml 文件中進行導航

xpath 包含乙個標準函式庫

xpath 是 xslt 中的主要元素

xpath 是乙個 w3c 標準

xpath使用:

1.匯入lxml.etree:from lxml import etree

2.etree.parse() 解析本地檔案, 將html變為python中的樹形結構

html_tree = etree.parse(『xx.html』,parser=) # parser為轉換器

3.etree.html() 伺服器響應檔案,將html變為python中的樹形結構

html_tree = etree.html(response.read().decode(『utf-8』))

4.html_tree.xpath(xpath路徑)

基本語法:

1.路徑查詢

//:查詢所有的子孫結點,不考慮層級關係

/: 找直接子節點

2.謂詞查詢

//div[@id]

//div[@id=「maincontent」]

3. 屬性查詢

//@class

4.模糊查詢

//div[contains(@id,「he」)]

//div[starts-with(@id,「he」)]

5.內容查詢

//div/h1/text()

6.邏輯運算

//div[@id=「head」 and @class=「s_down」]

//title | //price

7.匹配未知結點

*,匹配任意元素

取反:not

在頁面結構渲染好以後才會載入,所有利用element可能獲取不到屬性值。

解決方法:

1.點開source檢視頁面原始碼,找到對應的屬性值

2.利用selenium視覺化爬取

# 爬取糗事百科笑話,並將頭像,使用者名稱,內容,點讚數存入mysql

import uuid

import pymysql

import requests

from lxml import etree

# 內容採集

url =

''headers =

response = requests.get(url, headers=headers)

contents = response.text

# 唯一值的生成

# xpath提取

)# 匯入資料庫

conn = pymysql.connect(host=

'localhost'

,user=

'root'

,password=

'6666'

,db=

'mydb1'

,port=

3306

) cursor = conn.cursor(

) sql =

"insert into data(url,name,content,num) values('%s','%s','%s','%s')"

%(icons_content,names,joke_content,joke_good)

num = cursor.execute(sql)

conn.close(

)cursor.close(

)

Python網路爬蟲 資料提取xpath

xpath,即為xml路徑語言 xmlpathlanguage 它是一種用來確定xml文件中某部分位置的語言。xml和html異同 都是玩標籤,標籤中都有屬性 xml必須為雙標籤,html單雙都可 xml標籤為自定義,html標籤都為內建xpath 使用路徑表示式在 xml 文件中進行導航 xpat...

python爬蟲 六 正則提取資料

首先抓 取豆瓣t op 250的網頁 首先抓取豆瓣top250的網頁 首先抓取豆瓣 top2 50的網 頁 首先看主函式 import urllib.request,parser from bs4 import beautifulsoup import re findlink re.compile ...

Python網路爬蟲與資訊提取(2) 爬蟲協議

上一節學習了requests庫,這一節學習robots協議 宣告robots協議,一般放在 的根目錄下,robots.txt檔案 京東robots鏈結 user agent disallow disallow pop html disallow pinpai html?user agent etao...