吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1109|回复: 5
收起左侧

[求助] 大佬看看吧关于python的xpath函数问题

[复制链接]
秃头崽的头发 发表于 2020-11-5 18:20
我在用xpath的时候发现如果提取数据时为空就不返回数据如图:
用xpath提取出来时这样的:
而我想要的数据时这样的
['阿联酋迪拉姆', '','174.12', '187.06', '','182.23', '2020.11.05 18:11:51', '18:11:51', '澳大利亚元', '476.31', '461.51', '479.82', '481.94', '480.53', '2020.11.05 18:11:51', '18:11:51', ]
[Python] 纯文本查看 复制代码
import requests
from lxml import etree

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0"}
URL = 'https://www.boc.cn/sourcedb/whpj/index.html'

catalog =['货币名称', '现汇买入价', '现钞买入价', '现汇卖出价', '现钞卖出价', '中行折算价', '发布日期', '发布时间']
result ='\t'.join(catalog)

with open("./今日国际货币汇率.txt",'w+') as fp:
    fp.write(result)

# 进行数据分析
def mysj(URL):
    res = requests.get(url=URL,headers=headers, timeout=3)
    res.encoding ='UTF-8'

    res = etree.HTML(res.text)

    return  res
def handle(res):
    catalog = res.xpath('//div/div/table/tr/td/text()')
    return catalog

res = mysj(URL)
data = handle(res)
print(data)
num = []
for x in range(0,len(data)):
    if u'\u4e00' <= data[x] <= u'\u9fff':
        num.append(x)
print(num)
num.append(len(data))
s=[]
x1=0
count=-1
for x in num :
    if x == 0 :
        continue
    count +=1
    b = data[num[count]:x]
    s.append(b)
print(s)
data=[]
for x in range(0,len(s)):
    data.append('\t'.join(s[x]))


data = ('\n'.join(data))
print(data)
with open("./今日国际货币汇率.txt",'a') as fp:
    fp.write(data)

YAD(``7({YOP5_0CYUG(GQQ.png
5ZF2M[EN9}OQ)(){8BZ45SM.png
NLOR@DEV]CBF]}VBLHBVW67.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

bags 发表于 2020-11-5 20:26
加个判断吧
无敌小车 发表于 2020-11-5 20:40
本帖最后由 无敌小车 于 2020-11-5 20:44 编辑

用正则它不香吗,bs4也行啊。还有这样写比较好
/html/body/div/div[5]/div[1]/div[2]/table/tbody/tr
thepoy 发表于 2020-11-5 20:51
本帖最后由 thepoy 于 2020-11-5 20:53 编辑

给你举个例子:
[Python] 纯文本查看 复制代码
a = html.xpath('//tr[@id="xxx"]')  # a = None
b = a if a else ''  # b = '' 
 楼主| 秃头崽的头发 发表于 2020-11-5 21:36
thepoy 发表于 2020-11-5 20:51
给你举个例子:
[mw_shl_code=python,true]a = html.xpath('//tr[@id="xxx"]')  # a = None
b = a if a e ...

那如果是一组数据进行处理,那一个数据中我本来有想提取8组数据,可其中有一组有一个数据是none这样只能提取7组,那组none被系统自动忽略了,怎么样处理呢?
thepoy 发表于 2020-11-6 19:38
秃头崽的头发 发表于 2020-11-5 21:36
那如果是一组数据进行处理,那一个数据中我本来有想提取8组数据,可其中有一组有一个数据是none这样只能 ...

你这个问题就很奇怪,一个会处理,一组就不会处理吗?怎么会问出这种问题来?
[Python] 纯文本查看 复制代码
# catalog = res.xpath('//div/div/table/tr/td/text()')
catalog = res.xpath('//div/div/table/tr/td')
for i in range catalog:
    if i.xpath('/text()'):
        ...
    else:
        ...

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
秃头崽的头发 + 1 + 1 谢谢大佬虽然我回复完就想出来了还是感谢

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表