爬虫学习 数据解析 (3.5)

xpath解析

Xpath xml文档中查找信息的语言
“标签”–结点
爬虫学习 数据解析 (3.5)_第1张图片

模块安装:

pip install lxml
from lxml import etree #
er = etree.XML(xml)
et.xpath("/book")	# "/"表示根结点
et.xpath("/book/name/text()")	#
et.xpath("/book//nick") #"//"表示所有 
et.xpath("/book/*/nick") #第三代nick 
et.xpath("/book/author/nick[@class='jay']/text()")	#[]填属性 @属性值=
et.xpath("/book/*/nick/@id")	#拿nick的id值


xpath实战

猪八戒网站为例:

et = etree.HTML(html)
li_list = et.xpath(/html/body/ul/li[2]/a/text())

li_list = et.xpath("//li")
for li in li_list
	href = li.xpath("./a/@href")
	#href = li.xpath("./a/@href") [0]

import requests
from lxml import etree

url= "https://www.zbj.com/fw/?k=saas"
resp = requests.get(url)
resp.encoding="utf-8"
print(resp.text)

#element 工具    数据分布div
#找特定div 目标

#提取数据
et = etree.HTML(resp.text)
divs =et.xpath("//divp[@class='new-service-wrap']/div")

for div in divs:
    price = div.xpath("./div/div/a/div[2]/div[1]/span[1]/text()")
    #//标识子孙后代
    if not price:
        continue
    print(price)
'''
r= "_".join(["2","a","c"])
print(r)
'''

pyquery

from pyquery import pyquery 

p = PyQuery(html)
#p(选择器)
a = p(".aaa a")#类选择器  标签
b = p("#qq a")#id

p("#qq a").attr("href")
p("#qq a").text()

href = p("li a").attr("href")   #多个标签同时拿属性 ,默认拿第一个

href = p("li a").items()#迭代器,生成器
for item in it:
	href =item.attr("href")
	text = item.text()
	print(text,href)


.html()
.text()

爬虫学习 数据解析 (3.5)_第2张图片

pyquery 改变html结构

html代码

from pyquery import PyQuery

p = PyQuery(html)

p("div aaa").after("""div class="ccc">hhh
""")#尾部添加 p("div aaa").append("""iii""") p("div bbb").attr("class","aaa")#bbb改成aaa p("div.bbb").attr("id","123")#新增属性 无这个标签 p("div.bbb").remove_attr("id")#删除属性 p("div.bbb").remove()#删除标签

你可能感兴趣的:(python爬虫,爬虫,学习)