互联网站建设维护,appstore正版下载,怎么成立一家公司,WordPress个人知识库目录
一、三者共同点
二. 三者差异与基本使用
(一). 使用示例#xff1a;
(二). XPath
(三). Beautiful Soup
(四). pyquery
(五). 三者差异
三.练习实战 一、三者共同点 导入#xff0c;获得网页文本#xff0c;str 和 bytes 类型均可作为参数传入。
import reque…目录
一、三者共同点
二. 三者差异与基本使用
(一). 使用示例
(二). XPath
(三). Beautiful Soup
(四). pyquery
(五). 三者差异
三.练习实战 一、三者共同点 导入获得网页文本str 和 bytes 类型均可作为参数传入。
import requests
from lxml import etree # XPath
from bs4 import BeautifulSoup
from pyquery import PyQuery as pqurl
response requests.get(url) # 获得响应
content response.text # 获得网页文本.text获得 str 类型
# content response.content # .content 获得 bytes 类型
二. 三者差异与基本使用
(一). 使用示例
content
div classpaneldiv classpanel-headingh4 hrefh4_1Hello/h4/divdiv classpanel-bodyul classlist idlist-1li classelementFoo/lili classelementBar/lili classelementJay/li/ulul classlist list-small idlist-2li classelementFoo/lili classelementBar/li/ul/div
/div(二). XPath
获得网页文本后解析及解析得到的类型
html etree.HTML(content) # 获得解析对象
# print(html, type(html)) # Element html at 0x21626b253c0 class lxml.etree._Element
# purpose_content html.xpath() # 开始解析purpose_content html.xpath(//ul[classlist list-small])
# purpose_content html.xpath(//ul[contains(class, score)]) 等同上句
print(purpose_content, type(purpose_content)) # class listli_text html.xpath(//li/text())
print(li_text)
# [Element ul at 0x181e8f79800] class list
# [Foo, Bar, Jay, Foo, Bar] 可以看到 .xparh 解析得到的类型为 Element是列表所以可以遍历内容对其中的节点元素进行操作即也可以 .xpath 解析。 如果 class 内容较长可用 contains 。
解析匹配规则
大多以 // 开头/子节点./表示本身
例如
属性匹配 //div[属性“ ”]/li/a/text() 获得文本注意里面是双引号
是指匹配 div 里的属性
//div/class 获得 div 节点中的属性
在 li 节点获取其文本./text() 详细内容见3.1 XPath的使用-CSDN博客
(三). Beautiful Soup
获得网页文本后获得解析对象
soup BeautifulSoup(content, lxml)
print(soup, type(soup))
# 输出 content 内容和 class bs4.BeautifulSoup解析方法和解析得到的类型、获取属性
# 节点选择器
purpose_content soup.div.h4
print(purpose_content,type(purpose_content))
# h4Hello/h4 class bs4.element.Tag
print(purpose_content.string)
# 对节点进行获取文本 输出Hello
print(purpose_content.attrs[href])
# 等同 print(purpose_content[href])# 方法选择器
purpose_content soup.find_all(ul, class_list) # 指 ul 的class
print(purpose_content,type(purpose_content))
# 输出一个 节点文本列表 和 class bs4.element.ResultSet# css 选择器
purpose_content soup.select(div ul li) # 空格往子节点去
purpose_content2 soup.select(.list)
# 若 classword1 word2,则(.word1.word2)
print(purpose_content,type(purpose_content))
# 输出 列表 和 class bs4.element.ResultSet 可以看到 soup. 解析后得到的是 Tag 或者 ResultSet 类型分别对应单个内容和列表但都可以继续解析通过 . 往后解析和获得属性。 详细内容见3.2 Beautiful Soup 的使用-CSDN博客
(四). pyquery
获得网页文本后
doc pq(content)
print(doc, type(doc))
# 输出 content 内容 和 class pyquery.pyquery.PyQuery
解析方法和解析得到的类型、获取属性
# 直接使用 CSS 选择器
h4 doc(h4) # 单个节点
print(h4, type(h4))
# 节点内容 和 PyQuery类型
print(h4.text()) # 纯文本.html()获取 html文本lis doc(.list li) # 多个节点
print(type(lis)) # PyQuery 类型
items lis.items()
for item in items:print(item.text()) # Foo Bar Jay Foo Bar
# doc()会直接包含只要有 list 的class 就会算进去 可以看到都是 PyQuery 类型可直接通过 . 解析注意单个节点和多个节点多个节点需使用 .items 方法获取生成器迭代获得内容。 详细内容可见3.3 pyquery 的使用-CSDN博客
(五). 三者差异
XPath 主要通过 常用规则 .xpath() 解析例如///./等Beautiful Soup 可用节点选择器( soup.节点.节点.)方法选择器(soup.find_all / find)CSS选择器(soup.select( CSS规则)) 解析PyQuery 主要通过 doc(CSS规则) 解析比 Beautiful Soup 的CSS选择器方便一点;
三者都要注意以下多个节点迭代。
三.练习实战
2 三种解析方式爬取王者荣耀英雄图片-CSDN博客
文章到此结束本人新手若有错误欢迎指正若有疑问欢迎讨论。若文章对你有用点个小赞鼓励一下谢谢大家一起加油吧