我有一个简单的python代码,可以从开源api中提取一些恶意软件源,并从该列表中找到唯一的IP。
url已经包含IP,但当您捕获并保存在本地文件中时,您可以看到在每个IP之后\r\n都有其他字符串。这可能是因为新行。有人能指导我吗,因为我是Python的新手,我在这里做错了什么?
import urllib.request
import urllib.parse
import re
url = 'http://www.malwaredomainlist.com/hostslist/ip.txt'
resp = urllib.request.urlopen(url)
ip = re.findall(r'd{1,3}.d{1,3}.d{1,3}.d{1,3}', resp)
malwareIPList = ip.read()
print (malwareIPlist)
错误第223行,在findallreturn compile(模式,标志(.findall(字符串(TypeError:应为字符串或字节,如对象
问题是您需要从urllib.request.urlopen
中.read()
和resp
考虑:
import urllib.request
import urllib.parse
import re
url = 'http://www.malwaredomainlist.com/hostslist/ip.txt'
resp = urllib.request.urlopen(url)
print(resp)
打印:
<http.client.HTTPResponse object at 0x103a4ccf8>
我想你正在寻找的是:
url = 'http://www.malwaredomainlist.com/hostslist/ip.txt'
resp = urllib.request.urlopen(url)
ip = re.findall(r'd{1,3}.d{1,3}.d{1,3}.d{1,3}', str(resp.read(), 'utf-8'))
print (ip)
打印一组IP地址。。。
BTW,因为数据是由rn
分隔的ip地址,所以实际上不需要正则表达式。你可以做:
>>> str(resp.read(), 'utf-8').splitlines()
['103.14.120.121', '103.19.89.55', '103.224.212.222', '103.24.13.91', ...]