我是网络爬虫的新手。使用这些行抓取一些网站后:
x1 = urllib.request.urlopen('somewebsite1').read()
x2 = urllib.request.urlopen('somewebsite2').read()
x3 = urllib.request.urlopen('somewebsite3').read()
我有以下数据:
In [14]:print(x1)
b'<li><span class="Price down2">0.071 </span></li>'
In [15]:print(x2)
b'<li><span class="Price up2">0.059 </span></li>'
In [16]:print(x3)
b'<li><span class="Price down2">0.079 </span></li>'
x1,x2和x3的数据类型是字节。我想从x1,x2和x3中提取浮点数为0.071、0.059、0.079。这样做的pythonic方法是什么?
提前谢谢
编辑:为了获得更好的展示效果
答案 0 :(得分:2)
您可以使用正则表达式:
import re
x1_extracted = re.findall('(?<=>)\d+\.*\d*', x1.decode('utf-8'))
x1_extracted = float(x1_extracted[0])
首先,您需要解码字节序列(将其从字节转换为字符串。我假设编码为utf-8)。然后,您可以使用re
模块来查找值。该表达式的逐步含义是:查找一个或多个数字(\d+
),然后可选地跟一个点(\.*
),然后可选地再跟一个数字(\d*
)。所有这些之前都应加上>
((?<=>)
)。