pyquery——以jQuery的语法来操作解析xml文档

pyquery允许对xml文档进行jquery查询。该API尽可能类似于jquery。pyquery使用lxml进行快速的xml和html操作,能够以jQuery的语法来操作解析 HTML 文档。

实例:爬取疫情报告https://voice.baidu.com/act/newpneumonia/newpneumonia

(今天报错还未调试成功,明天继续)

import requests
from pyquery import PyQuery as pq

def get_page(url):
    """发起请求 获得源码"""
    r = requests.get(url)
    r.encoding = ‘utf8‘
    html = r.text
    return html

def parse(text):
    """解析数据 写入文件"""
    doc = pq(text)
    # 获得每一行的tr标签
    ths  = doc(‘table.table thead tr.VirusTable_1-1-156_26gN5Z‘).items()
    for th in ths:
        area = th.find(‘span‘).text()  # 地区
        confirm = th.find(‘td:nth-child(2)‘).text()  # 确诊
        death = th.find(‘td:nth-child(3)‘).text()  # 死亡
        cure = th.find(‘td:nth-child(4)‘).text()  # 治愈
        with open(‘D:\yiqing.csv‘, ‘a+‘, encoding=‘utf8‘) as f:
            f.write(area + ‘\t\t‘)
            f.write(confirm + ‘\t\t‘)
            f.write(death + ‘\t\t‘)
            f.write(cure + ‘\t\t\n‘)
    print("写入完成")
    """
    tds = doc(‘table.table tbody tr‘).items()
    for td in tds:
        rank = td.find(‘td:first-child‘).text()     # 排名
        name = td.find(‘div‘).text()  # 大学名称
        city = td.find(‘td:nth-child(3)‘).text()    # 城市
        score = td.find(‘td:nth-child(4)‘).text()   # 总分
        with open(‘D:\yiqing.csv‘, ‘a+‘, encoding=‘utf8‘) as f:
            f.write(rank + ‘\t\t‘)
            f.write(name + ‘\t\t‘)
            f.write(city + ‘\t\t‘)
            f.write(score + ‘\t\t\n‘)
    print("写入完成")
    """

if __name__ == "__main__":
    url = "https://voice.baidu.com/act/newpneumonia/newpneumonia"
    text = get_page(url)
    parse(text)

原文地址:https://www.cnblogs.com/sengzhao666/p/12304392.html

时间: 2025-01-15 03:36:45

pyquery——以jQuery的语法来操作解析xml文档的相关文章

[Xcode10 实际操作]七、文件与数据-(16)解析XML文档

本文将演示如何解析XML文档. 项目中已添加一份XML文档:worker.xml 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <workers> 3 <worker id='1'> 4 <name>Jerry</name> 5 <age>35</age> 6 <salary>25600</salary> 7 <

原生javascript解析xml文档

之前写过一篇 <javascript/jQuery解析或转换json和xml>链接是http://my.oschina.net/ososchina/blog/343748,这篇博客详细解释了json使用 JSON.js  window.eval() ,jQuery 与字符串互相转换的方法 ,顺便也说了一点jQuery解析xml文档的方法,这里着重论述javascript操作xml. 顺便提一下,今天做项目有一点问题,如何让服务程序接口返回的就是json,而不需要 使用 jQuery.ajax设

xml基础及其解析xml文档

xml基础及其解析xml文档 xml基础及其解析xml文档 xml基础语法 中国特色乱码问题 写xml文件的工具 xml中使用的转义字符 处理指令已经过时 xml的两个重要的功能 xml注释 xml解析Java应用程序读取xml文件的内容 xml解析原理 xml解析工具 DOM4J使用 DOM4J中核心API 将xml文档从磁盘读进内存形成Document对象 读取所有的标签节点 读取所有的属性节点 读取所有的文本节点 解决上面提出的问题 xml基础语法 一个基本的xml构成: <!--vers

四种生成和解析XML文档的方法详解

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 一.介绍及优缺点分析 1. DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的. [优点]      ①允许应用

浅谈用java解析xml文档(四)

继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使用dom4j解析,个人认为是四种解析方式里面最方便的一种,DOM4J是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM也在用D

浅谈用java解析xml文档(三)

接上一篇,本文介绍使用JDOM解析xml文档, 首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初, JDOM作为一个开放源代码项目正式开始研发.JDOM是一种解析XML的Java工具包. JDOM基于树状结构,利用纯JAVA技术对XML文档实现解析.生成.序列化及其它操作. 我们从以下步骤开始解析: (1).通过JDOM的API创建一个SAXBuilder的对象 SAXBuilder saxBuilder

网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档

小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心:通过该项目,我们对业务流程有一个整体把控.对继承和多态有深入的了解 下面是类图: 主界面图: 核心思路: 1   1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel; 2   3        该方法作用读取FullChannels.xml文件,并且

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

使用dom4j解析XML文档

dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不准确,也会导致多个同名的方法理解和用法不同 XML: <?xml version="1.0" encoding="utf-8"?> <students> <student age="25"> <name>