本文会介绍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.com/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.com/top250', headers=headers)
_element = etree.HTML(r.content)
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’> 电影名称: 肖申克的救赎
|