我了要认真了 发表于 2017-9-20 19:29:05

某节课的作业 关于爬取代理IP地址

import urllib.request
import re

url = 'http://www.xicidaili.com/nn'

req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')

result = re.findall(r'(((2\d|25|{0,1}\d{0,1}\d)\.){3}(2\d|25|{0,1}\d{0,1}\d))',html)

print(html)

print(result)


代码如上,爬取后得到的结果如图。
IP地址是得到了,但是它后面跟一串奇怪的数字。是我的正则表达式错了吗?
先谢谢了。

我了要认真了 发表于 2017-9-20 19:31:01

58.250.96.64这个是IP 但是它后面还跟了96.    96    64    这几个

foolwolf0068 发表于 2017-9-20 20:23:54

在小括号前加上?:
具体改成
r'((?:(?:2\d|25|{0,1}\d{0,1}\d)\.){3}(?:2\d|25|{0,1}\d{0,1}\d))'

我了要认真了 发表于 2017-9-21 12:58:17

foolwolf0068 发表于 2017-9-20 20:23
在小括号前加上?:
具体改成
r'((?:(?:2\d|25|{0,1}\d{0,1}\d)\.){3}(?:2\d| ...

不行呀,老哥。什么都找不到了。。。
能告诉我为什么在括号前加这个吗?

foolwolf0068 发表于 2017-9-22 10:37:12

我了要认真了 发表于 2017-9-21 12:58
不行呀,老哥。什么都找不到了。。。
能告诉我为什么在括号前加这个吗?

这是贪婪搜索,建议你再去听甲鱼的正则表达式的那几课吧
页: [1]
查看完整版本: 某节课的作业 关于爬取代理IP地址