学习Python第三天

爬王者荣耀首页




    
    Title


 

欢迎来到王者荣耀

HTML 超文本标记语言
无序列表ul

  • 鲁班
  • 狄仁杰
  • 安琪拉

无色无味的容器标签,常用div+css布局

  1. 软件工程
  2. 计算机
  3. 电气

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)

你可能感兴趣的:(学习Python第三天)