使用xpath语法提取本地html文件的内容
安装lxml库
# pip install lxml
from lxml import html
# with open('路径', '模式', '编码') as f:
f.write('写入的内容')
f.read() # 读取模式
读取本地的html文件
with open('index2.html', 'r', encoding='utf-8') as f:
html_data = f.read()
# print(html_data)
提取h1标题中的内容
selector = html.fromstring(html_data)
/ 代表根节点
获取标签的内容需要在路径末尾增加/text()
h1 = selector.xpath('/html/body/h1/text()')
print(h1)
获取标签内容语法形式
//标签1[@属性="属性值"]/标签2[@属性="属性值"]/.../text()
// 代表从任意位置开始
获取a标签的内容
a = selector.xpath('//div[@id="container"]/a/text()')
print(a)
获取标签属性语法形式
//标签1[@属性="属性值"]/标签2[@属性="属性值"]/.../@属性名
link = selector.xpath('//div[@id="container"]/a/@href')
print(link)
当当网图书爬虫
import requests
from lxml import html
获取目标站点的源代码
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)
书名
购买链接
店铺名称
当当网图书爬虫
import requests
from lxml import html
import pandas as pd
def spider(isbn):
book_list = []
获取目标站点的源代码
如何格式化字符串 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