【发布时间】:2014-11-29 11:56:48
【问题描述】:
我试图通过使用 urlib 扫描页面并使用正则表达式查找代理来使用 python 从site 中获取代理。
页面上的代理如下所示:
<a href="/ip/190.207.169.184/free_Venezuela_proxy_servers_VE_Venezuela">190.207.169.184</a></td><td>8080</td><td>
我的代码如下所示:
for site in sites:
content = urllib.urlopen(site).read()
e = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\<\/\a\>\<\/td\>\<td\>\d+", content)
#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d+
for proxy in e:
s.append(proxy)
amount += 1
正则表达式:
\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\<\/\a\>\<\/td\>\<td\>\d+
我知道代码有效,但正则表达式错误。
知道如何解决这个问题吗?
编辑:http://www.regexr.com/ 似乎我的正则表达式没问题?
【问题讨论】:
-
查看
lxml或beautifulsoup。对 html 使用正则表达式是一种 hack。 -
不要逃避
<,>,a,/regex101.com/r/xB5sT0/2 -
此外,如果您不想转义正则表达式中的每个 \,则需要使用原始字符串:在字符串前面加上
r,例如r"\d{1, 3}" -
该站点甚至具有“导出为 JSON”和“导出为文本”功能。也许你骑错了马?
标签: python html regex web-scraping html-parsing