爬王者荣耀首页
Title
欢迎来到王者荣耀
HTML 超文本标记语言
无序列表ul
无色无味的容器标签,常用div+css布局
- 软件工程
- 计算机
- 电气
src/alt 都可以叫做img标签的属性
使用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)
列表
l2 = []
for i in range(10):
l2.append(i)
print(l2)
#列表推导式快速生成列表
#[表达式 for 临时变量 in 可迭代对象]
l1 = [i for i in range(10)]
print(l1)
#打乱顺序
from random import shuffle
shuffle(l1)
print(l1)
reverse=True 倒序排序
l1.sort(reverse=True)
print(l1)
复杂结构扥排序
info_list =[
{'name':'张三','age':19},
{'name':'李四','age':80},
{'name':'王五','age':3},
]
print(info_list)
def sort_by_age(it):
return it['age']
info_list.sort(key=sort_by_age)
print(info_list)
xx图书网爬虫
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)
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[@class="search_shangjia"]/a[1]/text()')
if len(store) == 0:
store = '当当自营'
else:
store = store[0]
book_list.append({
'book_name': book_name,
'link':link,
'price':price,
'store':store
})
排序
book_list.sort(key=lambda x: x['price'], reverse=True)
重新遍历显示每家商铺的信息
for book in book_list:
print(book)
存储 csv
df = pd.DataFrame(book_list)
df.to_csv('dangdang.csv')
isbn = input('请输入书号')
# 9787115428028
spider(isbn)