当前位置: 首页 > news >正文

门户网站开发方案aspnet网站开发实战

门户网站开发方案,aspnet网站开发实战,网站建设需要的设备和软件,说明书得制作需要哪些材料文章目录 一、前言参考文档#xff1a; 二、xpath语法-基础语法常用路径表达式举例说明 三、xpath语法-谓语表达式举例注意 四、xpath语法-通配符语法实例 五、选取多个路径实例 六、Xpath Helper安装使用说明例子#xff1a; 七、python中 xpath 的使用安装xpath 的依赖包xm… 文章目录 一、前言参考文档 二、xpath语法-基础语法常用路径表达式举例说明 三、xpath语法-谓语表达式举例注意 四、xpath语法-通配符语法实例 五、选取多个路径实例 六、Xpath Helper安装使用说明例子 七、python中 xpath 的使用安装xpath 的依赖包xml节点的获取xpath解析 html内容1. 以读取 html文件的方式进行解析2、对 html的内容进行解析 一、前言 XPATHXML Path Language,它可以在 XML 和 HTML文档中对元素和属性进行查找和遍历。 XPath 使用路径表达式来选取 XML 文档中的节点或节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常类似。使用chrome 插件选择标签时候选中时选中的标签会添加属性class“xh-highlight” 参考文档 基础语法https://www.w3school.com.cn/xpath/index.asp python使用 xpathhttps://blog.csdn.net/q1246192888/article/details/123649072 二、xpath语法-基础语法 常用路径表达式 表达式说明nodename选取此节点的所有子节点/绝对路径如果写在最前面则从根节点选取否则是当前节点下的子节点//相对路径和绝对路径/不同的是整个文本下的直接或间接节点而不考虑他们的位置。.当前节点类似于 linux 的当前目录..当前节点的父节点类似与 linux 的上一级目录text()一个开闭标签之间的文本内容某个节点标签内的属性 举例说明 footer: 获取 footer 节点下的所有子节点/title: 根节点下所有title 标签//div根节点下所有的div 标签./div[classtest-class].text()当前节点下属性classtest-class的所有div 的文本内容./div[idtest-id]…//a.text(): 当前节点下属性idtest-id的div的 所有上一级a 标签的文本内容 三、xpath语法-谓语 可以根据标签的属性值、下标等来获取特定的节点 谓语用来查找某个特定的节点或者包含某个指定的值的节点。 谓语被嵌在方括号中。 表达式举例 路径表达式结果//title[lang“eng”]选择lang 属性值为 eng 的所有 title元素//bookstore/book[1]选取属于 bookstore 子元素的第一个book 元素//bookstore/book[last()]选取属于 bookstore子元素的最后一个 book 元素//bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素//bookstore/book[position()1]选择所有 bookstore 下面的 book元素从第二个开始选择//book/title[text()‘Harry Potter’]选择所有 book下的title元素仅仅选择文本为 Harry Potter 的 title 元素//div[id“test-div-1”]/span选择 idtest-div-1下的 div下的所有 span 节点/bookstore/book[price35]/title选取 bookstore元素的所有 title节点且其中的 price 子节点的值必须大于35//div[id“test-container”]/span/class找到 idtest-container的div下 的 span节点的所有class的值//span[i2000]找到所有 span 节点且其中的 i子节点的text()大于2000//div[span[2]9.4]找到所有的 div 节点且子节点中第二个 span 的text()内容大于9.4//div[contains(id,“test_div_”)]找到所有 div节点且id包含了test_div_//div[class“pagination”]//span[contains(text(),“下一页”)]先找到classpagination的 div再找其子节点span且文本内容包下一页 注意 只要涉及到条件的加[]只要涉及到加属性值加凡事 /text()/ 加在最后是取值取的是前面 标签的属性值text() 加在[]中则是修饰符表示使用标签的属性名或属性值 来筛选节点xpath 的索引下标是从1开始常用函数 text()取标签之间的文本contains(属性,“内容”)表示某节点属性包含的内容 四、xpath语法-通配符 xpath 的通配符用来选取未知的 html/xml 元素 语法 通配符说明*匹配任何的元素节点*匹配任何属性节点node()匹配任何类型的节点 实例 路径表达式说明/bookstore/*选取bookstore节点下的所有子节点//*选取文档中的所有文档//tittle[*]选取所有带有属性的 title元素 五、选取多个路径 通过 xpath 的运算符|选取多个路径表示多个路径的并集 实例 路径表达式说明//book/title | //book/price选取 book元素下的所有title和 price元素//title | //price选取文档中的所有title和 price元素/bookstore/book/title | //price选取属于 bookstore节点下 book 节点下的所有 title节点 以及文档中所有的 price 元素 六、Xpath Helper Xpath Helper是一个免费的 chrom插件是用来方便调试 xpath 用的可以提高效率由日本的一名程序员开发只是目前只有外网可以访问。 我是使用了CMYNetwork加速器 VPN通道来进行安装。当然往上免费的也可以下载到。 扩展链接地址 注VPN节点最好选择美国的节点 安装 使用说明 打开一个任意网站百度贴吧为例https://tieba.baidu.com/p/8940673717可以在浏览器的右上角点击图标按钮或按下 CtrlShiftX快捷键(mac os 上是 CommandShiftX)就可以开启 xpath helper如下图 左侧区域显示的是 xpath 语法来筛选右侧区域就来显示效果。 查找某一个或某一块节点元素的 xpath,可以按 Shift键将鼠标移动到指定节点元素的位置就可以看到xpath了 也可以在右键—检查选择具体的节点然后右键—Copy—Copy Xpath 将 copy的xpath复制到 xpath helper的查询框就可以看结果是否正确了 例子 以查看人工智能贴吧的某一条内容为例子 !--查看 classd_post_content_main节点下的 idpost_content_149887537934节点的内容-- //div[classd_post_content_main]//div[idpost_content_149887537934]查看分页 如下是来查找分页的 下一页的href的链接值 //div[idthread_theme_5]//ul[classl_posts_num]//a[text()下一页]/href七、python中 xpath 的使用 安装xpath 的依赖包 pip install lxmlxml节点的获取 源码上 xml 解析的源码https://gitee.com/allen-huang/python/blob/master/crawler/do-parse/test_xml_xpath.py xml 文件的内容 ?xml version1.0 encodingUTF-8 ? rootheadtitlexml的 xpath 测试/title/headbookstorebooktitle langzh图解 HTTP 协议/titleprice59/price/bookbooktitle langzh网络爬虫开发实战/titleprice139/price/book/bookstore /rootxml的解析文本内容 def test_xml(self):tree etree.parse(book.xml)# 获取 head 节点下的 title 节点的文本内容print(tree.xpath(head/title/text()))# 获取 bookstore 节点下的 book 的内容for element in tree.xpath(//bookstore):# 当前节点下的 book 节点的 title 节点的文本内容print(element.xpath(book/title/text()))# 当前节点下的 book 节点的 price 节点的文本内容print(element.xpath(book/price/text()))passxml的属性筛选 def test_xml_fromstring(self):加载 xml 字符串筛选属性的所有 title 的节点内容return:xml_str rootheadtitlexml的 xpath 测试/title/headbookstorebooktitle langzh图解 HTTP 协议/titleprice59/price/bookbooktitle langzh网络爬虫开发实战/titleprice139/price/book/bookstore/roottree etree.fromstring(xml_str)title_nodes tree.xpath(//title[langzh])for node in title_nodes:print(node.text)price_nodes tree.xpath(//price)for node in price_nodes:print(node.text)passxpath解析 html内容 解析 html的内容的源码地址https://gitee.com/allen-huang/python/blob/master/crawler/do-parse/test_html_xpath.py 1. 以读取 html文件的方式进行解析 文件也一同放在码云上book.html 读取一个html文档需要是标准的html对于标签不全的html,就会报错,而HTML()会修复html的标签 html文件的结构 !DOCTYPE html html langzh-CN headmeta http-equivcontent-type contenttext/html; charsetutf-8/title豆瓣阅读/title /head body div classbookstore-containerul classbookstore-listli idbook-1 classbookstore-itema hrefhttps://read.douban.com/reader/ebook/52497819/ classbookstore-coverdiv classbookstore-infodiv classtitleJava高并发编程多线程与架构设计/divdiv classauthor王文君/divdiv classprice59.00/divdiv classscore8.7/divdiv classpublisher机械工业出版社/div/div/a/lili idbook-2 classbookstore-itema hrefhttps://read.douban.com/reader/ebook/153139284/ classbookstore-coverdiv classbookstore-infodiv classtitleJava高并发编程详情/divdiv classauthor王文君/divdiv classprice55.00/divdiv classscore8.2/divdiv classpublisher机械工业出版社/div/div/a/lili idbook-3 classbookstore-itema hrefhttps://read.douban.com/reader/ebook/128052544/ classbookstore-coverdiv classbookstore-infodiv classtitle深入理解Java虚拟机JVM高级特性与最佳实践第3版/divdiv classauthor周志明/divdiv classprice99/divdiv classscore9.4/divdiv classpublisher机械工业出版社/div/div/a/li/ul /div /body /html单元测试中的前置操作设置共用对象 def setUp(self):前置操作todo 1.将一个html文件转化成html对象etree.parse()默认只能读取一个标准的html文档对于标签不全的html,需要加上etree.HTMLParser(),否则就会报错,而使用HTML()会修复html的标签todo 2.将html字符串转化成html对象并使用etree.HTML()读取return:# 从本地文件中读取 book.html 文档,并使用标准的html解析器self.html_load etree.parse(book.html, etree.HTMLParser())# 这里在末尾特意少了一个/li用来测试最后是否自动补全self.html_str div classfruits-containerulli classitem-0a hrefapple.html苹果/a/lili classitem-1a hreforange.html橘子/a/lili classitem-inactivea hrefbanana.htmlspan classbold香蕉/span/a/lili classitem-1a hrefpear.html香梨/a/lili classitem-0a hrefstrawberries.html草莓/a/lili classitem-0a hrefpineapple.html菠萝/a/ul/divpass将 Element对象转为字符串 def test_tostring(self):获取 html中的最外层的div标签return:html_div self.html_load.xpath(//div[classbookstore-container])print(html_div)# 将 html对象转换成字符串是 bytes 类型并且格式化输出并进行解码print(etree.tostring(html_div[0], pretty_printTrue, encodingutf-8).decode())pass解析获取豆瓣读书的基本信息 通过 xpath 将书的链接书名作者等存入到 mongodb 中 def test_load_file(self):获取 html中所有的li标签return:html_li self.html_load.xpath(//li[classbookstore-item])# 遍历 classbookstore-item 的所有li标签book_list []for key, li in enumerate(html_li):# 获取当前li标签下的a标签的href属性url li.xpath(./a/href)# 获取当前li 标签下的 divtitle的文本内容title li.xpath(.//div[classtitle]/text())# 获取当前 li 标签下的 divauthor的文本内容author li.xpath(.//div[classauthor]/text())# 获取当前li 标签下的 divprice的文本内容price li.xpath(.//div[classprice]/text())# 获取当前li 标签下的 divscore的文本内容score li.xpath(.//div[classscore]/text())# 获取当前li 标签下的 divpublisher的文本内容publisher li.xpath(.//div[classpublisher]/text())book_dict {# _id: key, # 主键url: Tools.get_list_element(url, 0),title: Tools.get_list_element(title, 0),author: Tools.get_list_element(author, 0),price: Tools.get_list_element(price, 0),score: Tools.get_list_element(score, 0),publisher: Tools.get_list_element(publisher, 0)}book_list.append(book_dict)# 格式化打印数据pprint(book_list)# 将数据存入到 mongodb中res MongoPool().test.bookstore.insert_many(book_list)print(res.inserted_ids)结果 mongo 的数据 2、对 html的内容进行解析 这是直接使用 etree.HTML()进行分析它一般是来解析来自远程响应的内容并自带修复 html 标签的功能 html的结构 div classfruits-containerulli classitem-0a hrefapple.html苹果/a/lili classitem-1a hreforange.html橘子/a/lili classitem-inactivea hrefbanana.htmlspan classbold香蕉/span/a/lili classitem-1a hrefpear.html香梨/a/lili classitem-0a hrefstrawberries.html草莓/a/lili classitem-0a hrefpineapple.html菠萝/a/ul/div代码 def test_parse_html(self):使用 etree.HTML() 解析 html 文档etree.HTML() 会修复 html 标签并且将 html 转化成 html 对象return:html etree.HTML(self.html_str)print(etree.tostring(html, pretty_printTrue, encodingutf-8).decode())# 获取classitem-inactive的 标签最终的 text 内容text_list html.xpath(//li[classitem-inactive]//text())print(text_list)# 获取classitem-0 的最后一个标签的 text 内容itme0_last_text html.xpath(//li[classitem-0][last()]//text())print(itme0_last_text)# 获取classitem-1 的所有链接地址item1_href html.xpath(//li[classitem-1]//a/href)print(item1_href)# 查找所有classbold 的标签,*所有标签bold_info html.xpath(//*[classbold])# 将 bold_tag 转化成字符串print(etree.tostring(bold_info[0], pretty_printTrue, encodingutf-8).decode())print(bold_info[0].tag)pass经过测试打印出来的内容自动补全为标准化 html 解析的结果
http://www.hkea.cn/news/14459488/

相关文章:

  • dede手机医院网站模板下载wordpress自定义页面跳转
  • 网站怎么添加模块嘉兴做网站赚钱么
  • 网站开发进入腾信职位安卓app开发工具
  • 绵阳门户网站建设营销策划首选
  • wordpress 显示 列表seo的含义是什么意思
  • 主流做网站程序代码云南 旅游 网站建设
  • wordpress 网站标题图奢侈品电商网站首页设计
  • 中卫网站建设哪家好想做服装电商怎么入手
  • 论坛网站源码下载企业网站建设排名官网
  • 江苏建设部网站网站促销活动策划
  • 大连做外贸建站的专业公司建设银行缴费网站登录
  • 最新互联网项目平台网站建站易
  • 网站ico图标 代码seo收费还是免费
  • 当今做那些网站能致富聚合搜索引擎
  • 定制高端网站建设服务商ai生成建筑网站
  • 建设网站项目总结必应搜索推广
  • 网站界面设计形考聊城专业网站制作公司
  • 石家庄seo网站排名360推广和百度推广哪个好
  • 沈阳做网站哪家最便宜电商设计参考网站
  • 陕西省建设银行分行网站做网站买了域名之后
  • 在记算机上登陆一个网站点怎么做网站搜索引擎提交
  • 网站搭建书籍推荐网站建设管理情况自查报告
  • 做网站石材推销网站建设评比细则
  • 做竞彩网站代理犯法么企业内网
  • 青岛做外贸网站的公司简介工程建设部网站
  • 企业网站建设应注意什么中英企业网站系统
  • 苏州市姑苏区建设局网站wordpress增加用户
  • 株洲企业网站建设工作室淘宝客api采集发布到wordpress
  • 网站开发与推广就业网页制作软件只能使用vscode
  • 网站开发 书籍wordpress 3.4 漏洞