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.匹配未知結點
*,匹配任意元素
8.取反:not
在頁面結構渲染好以後才會載入,所有利用element可能獲取不到屬性值。
物件預設為空
當我們真正需要獲取的時候,第一次獲取會被例項化出來
當我們第二次到第n次獲取,會使用第一次例項化出來的值
解決方法:
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(4)
xpath,即為xml路徑語言 xmlpathlanguage 它是一種用來確定xml文件中某部分位置的語言。xml和html異同 都是玩標籤,標籤中都有屬性 xml必須為雙標籤,html單雙都可 xml標籤為自定義,html標籤都為內建 xpath 使用路徑表示式在 xml 文件中進行導航 xpa...
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...