Python的第三天

使用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

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