爬虫知识点(一) 正则和xpath (敲黑板的那种!!!)

最近有遇到接口返回值是xml文件,想匹配标签内的文本,难道要把xml转其他格式???

不可能,以本人懒惰的本性,想让我多转一次都不可能

那只能使用正则匹配了

xml代码如下(代码不完整,没关系):

text = '''
<?xml version="1.0" encoding="utf-8"?>
<Response>
  <SenderID> SenderID </SenderID>
  <ServiceID>GZSVR_SC0006</ServiceID>
  <Method>
    <Name>GetDataResourceInfo</Name>
    <Security Algorithm="">
    </Security>
    <Items>
      <Item>
        <Name>ID</Name>
        <Value type="String">
          <Data>1774</Data>
        </Value>
      </Item>
      <Item>
        <Name>Type</Name>
        <Value type="String">
          <Data>ATTR</Data>
        </Value>
      </Item>
      <Item>
        <Name>ResourceCode</Name>
        <Value>
          <Data>0101032400049</Data>
        </Value>
      </Item>
      <Item>
        <Name>ENNAME</Name>
        <Value type="String">
          <Data>G_DZK_XZQH</Data>
        </Value>
      </Item>
      <Item>
        <Name>DispName</Name>
        <Value type="String">
          <Data>户政地址库-行政区划</Data>
        </Value>
      </Item>
      <Item>
        <Name>Description</Name>
        <Value type="String">
          <Data>户政地址库-行政区划</Data>
        </Value>
      </Item>
      <Item>
        <Name>Fields</Name>
        <Value type="object">
          <Fields>
            <Field type="string" prec="0101032400049" scale="0" length="50" DECODE="DE01115" DQCODE="" DICCODE="" CHNAME="系统编号-主键" CanQuery="0" extParam="空">SYSTEMID</Field>
            <Field type="string" prec="0101032400049" scale="0" length="6" DECODE="" DQCODE="" DICCODE="" CHNAME="代码" CanQuery="1" extParam="空">DM</Field>
            <Field type="string" prec="0101032400049" scale="0" length="6" DECODE="" DQCODE="" DICCODE="" CHNAME="父级代码" CanQuery="0" extParam="空">FJDM</Field>
            <Field type="string" prec="0101032400049" scale="0" length="60" DECODE="DE00619" DQCODE="" DICCODE="" CHNAME="行政区划简称" CanQuery="1" extParam="空">MC</Field>
            <Field type="string" prec="0101032400049" scale="0" length="40" DECODE="" DQCODE="" DICCODE="" CHNAME="拼音首字母" CanQuery="1" extParam="空">PY</Field>
            <Field type="string" prec="0101032400049" scale="0" length="50" DECODE="DE00060" DQCODE="" DICCODE="" CHNA'''

需要匹配的文本:(框住的文本,圈住的是为了确认而已,不要在乎细节)

正则匹配代码:

import re

DataList = re.compile('<Data>(.*?)</Data>')
print(DataList.findall(text)[5])

NameList = re.compile('<Name>(.*)</Name>')
print(NameList.findall(text)[7])

r = re.compile("<Field .*?>(.*)</Field>")
for i in r.findall(text):
    print(i)

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值