使用xpath語法提取本地html文件的內(nèi)容
安裝lxml庫
# pip install lxml
from lxml import html
# with open('路徑', '模式', '編碼') as f:
f.write('寫入的內(nèi)容')
f.read() # 讀取模式
讀取本地的html文件
with open('index2.html', 'r', encoding='utf-8') as f:
html_data = f.read()
# print(html_data)
提取h1標(biāo)題中的內(nèi)容
selector = html.fromstring(html_data)
/ 代表根節(jié)點
獲取標(biāo)簽的內(nèi)容需要在路徑末尾增加/text()
h1 = selector.xpath('/html/body/h1/text()')
print(h1)
獲取標(biāo)簽內(nèi)容語法形式
//標(biāo)簽1[@屬性="屬性值"]/標(biāo)簽2[@屬性="屬性值"]/.../text()
// 代表從任意位置開始
獲取a標(biāo)簽的內(nèi)容
a = selector.xpath('//div[@id="container"]/a/text()')
print(a)
獲取標(biāo)簽屬性語法形式
//標(biāo)簽1[@屬性="屬性值"]/標(biāo)簽2[@屬性="屬性值"]/.../@屬性名
link = selector.xpath('//div[@id="container"]/a/@href')
print(link)
當(dāng)當(dāng)網(wǎng)圖書爬蟲
import requests
from lxml import html
獲取目標(biāo)站點的源代碼
url = 'http://search.dangdang.com/?key=9787115428028&act=input'
html_data = requests.get(url).text
xpath提取
selector = html.fromstring(html_data)
獲取所有圖書的價格
price = selector.xpath('//div[@id="search_nature_rg"]/ul/li[1]/p[3]/span[1]/text()')
print(price)
ul_lsit = selector.xpath('//div[@id="search_nature_rg"]/ul/li')
print(len(ul_lsit))
遍歷
for li in ul_lsit:
價格
price = li.xpath('p[3]/span[1]/text()')
print(price)
書名
購買鏈接
店鋪名稱
當(dāng)當(dāng)網(wǎng)圖書爬蟲
import requests
from lxml import html
import pandas as pd
def spider(isbn):
book_list = []
獲取目標(biāo)站點的源代碼
如何格式化字符串 format方法
url = 'http://search.dangdang.com/?key={}&act=input'.format(isbn)
html_data = requests.get(url).text
xpath提取
selector = html.fromstring(html_data)
ul_lsit = selector.xpath('//div[@id="search_nature_rg"]/ul/li')
print('共有{}家售賣此書'.format(len(ul_lsit)))
遍歷
for li in ul_lsit:
價格
price = li.xpath('p[3]/span[1]/text()')[0]
price = price.replace('¥', '')
price = float(price)
書名
book_name = li.xpath('p[@class="name"]/a/@title')[0]
購買鏈接
link = li.xpath('p[@class="name"]/a/@href')[0]
店鋪名稱
store = li.xpath('p[@cla