欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Day4_解析器和selenium

程序员文章站 2022-07-14 18:54:22
...

Day4_解析器和selenium

pyQuery

1.创建一个PyQuery对象

  • 导入该模块
from pyquery import PyQuery
  • PyQuery对象的本质就是一个容器
  • PyQuery(需要解析的是html的字符串)
html = open('test.html', encoding='utf-8').read()
pq = PyQuery(html)  # pq对应容器中只有一个html标签
  1. 通过选择器获取子标签
  • PyQuery对象(选择器) - 获取css选择器选中的标签对应的pyQuery对象
ps = pq('p')
print(ps, type(ps))
  • 在整个html中获取b标签(pq对应的容器中只加html一个标签)
print(pq('b'))
  • 在所的p标签中获得b标签(ps对应的容器中是整个页面中所有p标签)
print(ps('b'))
print(PyQuery(ps[0])('b'))
  1. 获取标签内容
  • PyQuery对象.text( )
  • 同时获取所有a标签的内容
result = pq('a').text()
print(result)
  • 单独获取每个a标签的内容
for a in pq('a'):
    print(PyQuery(a).text())
  1. 获取标签属性+
  • PyQuery对象.attr(属性名)

  • 获取第一个a标签的href属性

result = pq('a').attr('href')
print(result)
  • 获取每个a标签的href属性
for a in pq('a'):
    print(PyQuery(a).attr('href'))

xpath

  1. 构建指定树结构并获取根节点
from lxml import etree

html = etree.HTML(open('test.html', 'r', encoding='utf-8').read())
print(type(open('test.html', 'r', encoding='utf-8').read()))
  1. 根据路径获取节点(标签)
  • 节点对象.xpath(路径) - 获取指定路径对应的所有节点对象对应的列表
a_list = html.xpath('/html/body/a')
print(a_list)     # 所有a标签的列表
  1. 路径
  • 绝对路径:/绝对路径

    注意:绝对路径必须从树结构的根节点开始写(html树结构就是从html开始写)

result1 = html.xpath('/html/body/a/b')
print(result1)
  • 相对路径:

    . - 表示当前节点(谁去点xpath的就是谁为当前节点) (./可以省略)

    … - 表示当前节点的父节点

    路径的最后加’/text()'是用来获取标签的内容

result4 = a_list[0].xpath('../p')
print(result4)
result5 = a_list[0].xpath('./b/text()')
print(result5)
  • // - 全文检索

    //p - 获取整个页面中所有的p标签对应的节点

    //div/p - 获取整个页面中在div下面的p标签

  1. 获取内容和属性
  • 获取内容 - 在路径的最后添加/text( )
  • 获取属性 - 在路径的最后添加/@属性名
  1. 谓语
  • [N] - 获取第N个指定标签(在路径中可以添加[N])
  • [last()] - 最后一个
  • [last()-1] - 倒数第二个
  • [last()-N] - 倒数第二N+1个
  • [position()<N] - 前N-1个
  • [position()>N] - N+1到后面所有
  • [@属性名] - 获取拥有指定属性的标签
  • [@属性名 = 值] - 获取指定属性为值的标签
  • [子标签名>值],[子标签名>=值],[子标签名<值],[子标签名<=值],[子标签名=值] - 按照子标签的内容进行筛选
  1. 通配符 - *
  • 表示任意节点的任意属性
  1. 多项选择 - |
  • 路径1|路径2 - 路径1和路径2的所有标签对象

selenium

  1. 进入网页
from selenium import webdriver
# 创建浏览器对象(谷歌浏览器)
b = webdriver.Chrome()
b.get('https://www.jd.com')
print(b.page_source)
相关标签: Python 笔记