xpath的基本使用
//body/div[last()] body下的最后一个div元素
//div[@id] div下带id属性的元素
//body/* body下面所有的元素
//div[@*] 只要有用属性的div元素
//div[@id='footer']//div 带有id='footer'属性的div下的所有div元素
/@href 获取标签内元素值
//book/title |//book/price 选取 book 元素的所有 title 和 price 元素。
selenium 在结合xpath使用
# xpath 获取的是多个元素数据,通过selenium只能获取到第一个元素# 返回值为字符串
a = driver.find_element_by_xpath('//*[@id="arc-body"]/table[1]/tbody/tr//td ').text
#find_element_by_xpath 返回属于字符串样式可以进行 转换# find_elements_by_xpath 返回属于列表样式,不可以直接转换# 获取多个元素时使用 find_elements_by_xpath
a = driver.find_element_by_xpath('//*[@id="arc-body"]/table[1]/tbody/tr/td').text
a = driver.find_elements_by_xpath('//*[@id="arc-body"]/table[1]/tbody/tr/td')
# 关闭页面
driver.quit()
报错
# 在selenium中的xpath使用 ‘/text()’ 报错,
a = driver.find_element_by_xpath('//*[@id="arc-body"]/table[1]/tbody/tr/td/text()')<inputtype="text" maxlength="20"class="form-control search-input">
在selenium中使用如下方式取元素会报错
WebElement searchInput = driver.findElement(By.className("form-control search-input"));
selenium.common.exceptions.InvalidSelectorException
原因:class 属性值中间的空格表示的是后代选择器 , 如上表示的是“form-control”内的“search-input”,改为如下方式即可
WebElement searchInput = driver.findElement(By.className("search-input"));
字符串 转 html
使用lxml 解析字符串数据
import requests
from lxml import etree
# url= 'http://www.tstdoors.com/ldks/48734/4911028.html'
a = requests.get(url)
tree = etree.HTML(a.text)
lxa = tree.xpath('//*[@id="content"]/text()')for i in lxa:print(i)
本文转载自: https://blog.csdn.net/weixin_44306688/article/details/126596076
版权归原作者 龖龘大人 所有, 如有侵权,请联系我们删除。
版权归原作者 龖龘大人 所有, 如有侵权,请联系我们删除。