oooipussy 发表于 2020-6-20 17:57:14

匹配btc查询网站的地址链接的问题

本帖最后由 oooipussy 于 2020-6-20 17:59 编辑

import urllib.request
import re

block = "0000000000000dc3998b2615c2a1754dd38eda2ab80624e9562873c5b20a4713"
block_url = "https://btc.com/" + block
block_page = '?page=2&order_by=tx_block_idx&asc=1'
print (block_url)

response = urllib.request.urlopen(block_url)

html = response.read().decode('utf-8','ignore')

result_next_block = re.search('(https://btc.com/)(\d(\w|\d){33})(")' , html)

print (result_next_block)
上面是 对某块 网页的读取

在取地址的时候 只能取得地址 33位 而不是 34位 为什么

我的正则 刚刚学的
也就是这句:
result_next_block = re.search('(https://btc.com/)(\d(\w|\d){33})(")' , html)



结果是这样的:
https://btc.com/0000000000000dc3998b2615c2a1754dd38eda2ab80624e9562873c5b20a4713
<_sre.SRE_Match object; span=(17373, 17424), match='https://btc.com/16aMVLpAWj9zDXpooSx9WyXxkLEwgHwL6>   这里最后还应该有一个S ,也就是正确结果是16aMVLpAWj9zDXpooSx9WyXxkLEwgHwL6S
但是我为什么取不到?
哪里不对么?





oooipussy 发表于 2020-6-21 18:34:33

无人?

suchocolate 发表于 2020-6-21 19:56:01

本帖最后由 suchocolate 于 2020-6-21 20:37 编辑

你的匹配其实是能匹配的,用print打印一下可以看到第2子组就是:
print(result_next_block.groups())
('https://btc.com/', '16aMVLpAWj9zDXpooSx9WyXxkLEwgHwL6S', 'S', '"')
# 想获取第2子组:
print(result_next_block.group(2))不过我觉得没必要那么麻烦还要算位,还要考虑子组,可以直接匹配输出:
result_next_block = re.findall(r'href="https://btc.com/(.*?)" class="txio-address"', html)
print(result_next_block)
16aMVLpAWj9zDXpooSx9WyXxkLEwgHwL6S

oooice 发表于 2020-6-22 11:06:54

suchocolate 发表于 2020-6-21 19:56
你的匹配其实是能匹配的,用print打印一下可以看到第2子组就是:
不过我觉得没必要那么麻烦还要算位,还要 ...

谢谢你!
页: [1]
查看完整版本: 匹配btc查询网站的地址链接的问题