我正在尝试从谷歌地图中获取以公里和时间为单位的距离。 但是,当我运行我的代码时。结果是 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
.因此,当使用这些字符作为原始字符时,使用 \
进行转义。先在前面
所以,下面的表达式regex
和 regex2
:
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/