python xpath用法
xpath在Python的爬蟲學習中,起著舉足輕重的地位,對比正規表示式 re兩者可以完成同樣的工作,實現的功能也差不多,但xpath明顯比re具有優勢,在網頁分析上使re退居二線。
xpath的簡單用法:
import requests
# 引入xpath模組
from lxml import etree
url ='http://www.qiushibaike.com/hot/page/1'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'
}
response = requests.get(url,headers=headers)
print(response.content)
# 將字串轉化成html程式碼
root = etree.HTML(response.content)
print(root)
# //從根標籤開始找 找到類名為author clearfix的標籤
# /a 找到某一個標籤下面的a標籤
# text()獲取標籤的文字
name = root.xpath('//div[@class="author clearfix"]/a/h2/text()')
#值是一個列表
print(name)
content = root.xpath('//div[@class="content"]/span/text()')
print(content)
1) // 雙斜槓 定位根節點,會對全文進行掃描,在文件中選取所有符合條件的內容,以列表的形式返回。
html = etree.parse(原始碼)
print(type(html))
print(html)
# 找到網頁內所有的a標籤
a = html.xpath('//a')
print(a)
# 找到所有的ul標籤
# 找到所有ul當中的所有a標籤
# 獲取a標籤文字和所有a標籤的子標籤的文字
result = html.xpath('//ul//a//text()')
print(result)
2) / 單斜槓 尋找當前標籤路徑的下一層路徑標籤或者對當前路標籤內容進行操作
3) /text() 獲取當前路徑下的文字內容
# 找到指定的文字內容
# 如果找某一個標籤的文字 而這個標籤下面還有其他的標籤
# 那麼只找這個標籤的文字 子標籤的文字不找
result = html.xpath('//a/text()')
print(result)
# 獲取指定id名字的標籤的文字
result = html.xpath('//ul/li/a[@id="jd"]/text()')
print(result)
# 獲取擁有指定類名的標籤的文字
result = html.xpath('//a[@class="shopping"]/text()')
print(result)
# //text()找到本標籤以及所有子標籤的文字
result = html.xpath('//div//text()')
print(result)
for name in result:
print(name)
4) /@xxxx 提取當前路徑下標籤的屬性值
# 找到所有a標籤的超連結屬性
result = html.xpath('//a/@href')
print(result)
5) last()獲取最後一個
result = html.xpath('//ul/li[last()]')
print(result)
xpath爬蟲例子,爬取天堂圖片網:
# shutil 是高階的檔案,資料夾,壓縮包處理模組
import os,shutil
# urlretrieve 用於圖片的下載
from urllib.request import urlretrieve
import requests
from lxml import etree
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'
}
# 建立資料夾
if os.path.exists('images'):
shutil.rmtree('images', True)
else:
os.mkdir('images')
os.chdir('images')
record = 1
def get_image_with_code(url):
response = requests.get(url,headers=headers).content
# print(response)
code = etree.HTML(response)
# 獲取圖片img標籤
img_list = code.xpath('//div[@class="il_img"]/a/img')
print(img_list)
global record
print('正在下載第{}頁'.format(record))
os.mkdir('第{}頁'.format(record))
os.chdir('第{}頁'.format(record))
for img in img_list:
# img_src = img.get('src')
# 獲取圖片地址
img_src = img.xpath('@src')[0]
# 獲取圖片名
img_alt = img.get('alt')+'.jpg'
print(img_src,img_alt)
#下載 前面為圖片地址,後面為圖片名字
urlretrieve(img_src,img_alt)
record += 1
# 返回父級目錄
os.chdir(os.path.pardir)
# 獲取下一頁的連結
next_page_url = code.xpath('//a[@class="page-next"]/@href')[0]
print(next_page_url)
if len(next_page_url) == 0:
print('已到最後一頁')
return
else:
base_url = 'http://www.ivsky.com'
# 拼接網址
full_url = base_url+next_page_url
# 呼叫方法獲取下一頁圖片
get_image_with_code(full_url)
# 呼叫方法開始爬取圖片
get_image_with_code('http://www.ivsky.com/tupian/meishishijie/')
相關文章
- 淺談python中的xpath用法Python
- xPath 用法總結整理
- Python爬蟲-xpathPython爬蟲
- Python爬蟲——XPathPython爬蟲
- Python爬蟲——Xpath和lxmlPython爬蟲XML
- python使用xpath(超詳細)Python
- Python爬蟲之XPath語法Python爬蟲
- python_selenium元素定位_xpath(2)Python
- Python爬蟲之資料解析(XPath)Python爬蟲
- Python爬蟲教程-21-xpath 簡介Python爬蟲
- python爬蟲:XPath語法和使用示例Python爬蟲
- Xpath
- python print 用法Python
- python match用法Python
- xpath解析
- 初始xpath
- Python 爬蟲網頁內容提取工具xpath(二)Python爬蟲網頁
- Python 爬蟲網頁內容提取工具xpath(一)Python爬蟲網頁
- Python字典dict用法Python
- python-lambda用法Python
- python pil resize 用法Python
- Python爬蟲教程-22-lxml-etree和xpath配合使用Python爬蟲XML
- Python爬蟲基礎講解(七):xpath的語法Python爬蟲
- Xpath,XQuery,DTD
- Python range() 函式用法Python函式
- python-random的用法Pythonrandom
- python中return的用法Python
- Python下劃線用法Python
- Python self用法詳解Python
- python BeautifulSoup用法介紹Python
- python中的eval用法Python
- Python with 語句的用法Python
- Python中if的基本用法Python
- Python中下劃線用法Python
- Python排序函式用法Python排序函式
- 用xpath、bs4、re爬取B站python資料Python
- 爬蟲 – xpath 匹配爬蟲
- 如何手寫xpath