本文会介绍requests和webdriver的方式利用xpath去提取想要的信息;

XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。菜鸟教程

开发者工具(F12)关于XPath的使用

元素定位可以用浏览器自带的开发者工具(F12)再按Ctrl+F的搜索框中输入Xpath表达式来定位;


不熟练xpath表达式的也可右键点击选中的标签复制该标签的Xpath;

XPath Helper

也可以使用工具XPath Helper。可帮助你更好的提取HTML中的数据;

下载地址:https://github/eliasdorneles/xpath_helper

下载后,在Google浏览器的拓展程序中安装;

安装后,可使用打开和关闭的快捷键 Ctrl +Shift + x;
左边框可输入xpath表达式;右边框会展示提取的信息;

webdriver

webdriver中可用find_element_by_xpath方法定位;
例子:

driver.find_element_by_xpath("//input[@palaceholder='请输入密码']")   #用属性定位
driver.find_elemnet_by_xpath("//*[text()='接口日志']")     #用标签值定位

requests

requests可获取页面的信息,再通过lxml的etree.HTML()用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_Element对象。

安装lxml:

pip install lxml

提取电影名称的例子:

import requests
from lxml import etree

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36n/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36 XBLife/3.0'
}
r = requests.get(url='https://movie.douban/top250', headers=headers)
#字符串转换成HTML的格式
_element = etree.HTML(r.content)
# 通过xpath表达式获取标签中的电影名称的列表
movie_list = _element.xpath('//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()')
print(type(movie_list))
print('电影名称: ', movie_list[0])

打印结果:

<class ‘list’>
电影名称: 肖申克的救赎

更多推荐

python xpath提取HTML中的数据