python - 为什么我的输出是抓空括号?

标签 python ssl

我正在尝试从谷歌地图中获取以公里和时间为单位的距离。 但是,当我运行我的代码时。结果是 2 个空括号。像这些: [] []

我做错了什么?你可以在下面看到我的代码。 bwt,我使用的是 3.5.1 版本的 python。 我希望你可以帮助我。谢谢安娜。

import urllib.request

import re

import ssl


url2 = "https://www.google.dk/maps/dir/Aarhus+Kommune/Horsens+Municipality/@56.0321212,9.6926376,10z/am=t/data=!4m17!4m16!1m5!1m1!1s0x464c4cb9541ed4a9:0xe58661230cfb55d!2m2!1d10.1373728!2d56.1683931!1m5!1m1!1s0x464c721bbef053d9:0xd089bdc7f76375ab!2m2!1d9.7844165!2d55.9267709!2m3!6e1!7e2!8j1465804800"

context1 = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

htmlfile = urllib.request.urlopen(url2, context=context1)

htmltext = htmlfile.read()

regex = b'<span jstcache="1146">(.+?) km</span>'

regex2 = b'<span jstcache="1145" class="delay-light" jsan="7.delay-light">(.+?)</span>'

pattern = re.compile(regex)

pattern2 = re.compile(regex2)

distance_km = re.findall(pattern,htmltext)

distance_time = re.findall(pattern2,htmltext)

print(distance_km)
print(distance_time)

最佳答案

在 Python 正则表达式中,"<>."字符有特殊用途,也称为 regexp meta chacter .因此,当使用这些字符作为原始字符时,使用 \ 进行转义。先在前面

所以,下面的表达式regexregex2 :

regex = b'<span jstcache="1146">(.+?) km</span>'

regex2 = b'<span jstcache="1145" class="delay-light" jsan="7.delay-light">(.+?)</span>'

应该是:

regex = b'\<span jstcache="1146">(.+?) km\</span\>'

regex2 = b'\<span jstcache="1145" class="delay-light" jsan="7\.delay-light">(.+?)\</span\>'

关于python - 为什么我的输出是抓空括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37656473/

相关文章:

python - 关于字符编码的 Python 和 Perl 打印差异

python - 如何让 Python 读取用户输入函数?? (比如 f(x)=2x^2+3x+1)

angularjs - Angular + Node.js HTTP 和 HTTPS (SSL)

node.js - SSL:Heroku、Nodejs、Socketio、ReactJS

python - 在python中应用具有周期性边界条件的圆形掩模

python - 为什么这个 Jinja 宏渲染文本而不是 HTML?

python - 使用 Python 将文本中的部分数据提取到 csv 中

SSL蛋糕PHP表单

ssl - jax-rs 网络服务 : how to hide some entity fields and use SSL

ssl - Safari - https 403 禁止访问被拒绝