css-selector
尽量避免解析路径中包含位置信息
chrome页面中内置了Jquery环境, 用$符号来表示
直接定位元素
通过id进行定位
$("#id值")
通过class进行定位
$(".class值")
通过属性名进行定位
$("标签名[属性名='属性值']") $("ul[class='gl-warp clearfix']")
获取兄弟节点
获取当前节点的下一个节点
dom提供的接口, 不属于css-selector语法
tmp = $("li[data-sku='6039832']")[0] tmp.nextElementSibling
通过css-selector(不建议)
$("ul[class='gl-warp clearfix'] li:first-child + li")
获取当前节点的上一个节点
dom提供的接口, 不属于css-selector语法
tmp = $("li[data-sku='2136538']")[0] tmp.previousElementSibling
获取父子节点
获取父节点
dom提供的接口, 不属于css-selector语法
tmp.parentElement
获取子节点
获取所有子节点
遍历所有符合条件的元素
$("ul[class='gl-warp clearfix'] div[class='gl-i-wrap']")
dom提供的接口, 不属于css-selector语法
$("ul[class='gl-warp clearfix']")[0].children
获取第一个子节点
:fist-child $("ul[class='gl-warp clearfix'] li:first-child")[0]
获取最后一个子节点
:last-child $("ul[class='gl-warp clearfix'] li:last-child")[0]
获取第N个子节点
:nth-child(索引) $("ul[class='gl-warp clearfix'] li:nth-child(5)")[0]
模糊匹配
匹配开头
^
# 匹配data-sku属性值为2开头的元素 $("li[data-sku^='2']")
匹配结尾
$
$("li[data-sku$='2']")
匹配子集
*
$("li[data-sku*='2']")
获取文本值
$("li[data-sku='6039832'] div[class='p-name p-name-type-2'] em")[0].innerText
获取属性值
$("ul[class='gl-warp clearfix'] li")[0].getAttribute("data-sku")
BeautifulSoup
安装
pip install bs4 pip install lxml
使用BeautifulSoup
from bs4 import BeautifulSoup def jd_search_parse(html): soup = BeautifulSoup(html, "lxml") item = soup.select("li[data-sku='6039832']")[0]
直接定位元素
略
去除空白字符
html = html.replace('\r\n', "").replace("\n", "").replace("\t", "")
获取兄弟节点
获取上一个节点
tmp_ele.previous_sibling
获取下一个节点
tmp_ele.next_sibling
获取父子节点
获取父节点
tmp_ele.parent
获取子节点
tmp_ele.children
模糊匹配
略
获取文本值
content = tmp_ele.text.strip()
获取属性值
value = tmp_ele.attrs["data-sku"]
Comment here is closed