有一个存放ip的txt文本,通过读取文本内的所有ip,然后判断该ip的80端口上面有没有部署网站,如果有,就把这个网站首页的内容写入文本
首次理解
1、读取文本内所有ip
2、读取出来的ip拼接下80端口,再通过200状态码判断,存在就写入内容到txt中
import requests
#从文本中获取ip地址
with open( 'ip.txt','r',encoding='utf-8') as a:
ips = a.read().splitlines()
#判断ip的80端口是否有开,有就将首页内容写在text.txt中
with open('text.txt','w') as a:
for i in ips:
url = 'http://'+i+':80'
try:
res = requests.get(url)
if res.status_code == 200:
a.write(res.content.decode('utf-8')+'\n')
except:
continue
二次理解
用顺序结构的话,后期维护也不方便,或许可以封装成方法的形式;
其实就是文件读取+文件写入;
其中写入时的条件是ip开了80,if url == 'http://:80'是判断是否到了最后一行
#从文本中读取ip
def read(ip):
with open(ip,'r',encoding='utf-8') as a:
return a.read().splitlines()
#判断ip是否开放80,开放的话写入在text.txt中
def pd(ips):
with open('text.txt', 'w', encoding='utf-8')as a:
for i in ips:
url = 'http://'+i+':80'
try:
res = requests.get(url)
if url == 'http://:80':
continue
elif res.status_code == 200:
a.write(res.content.decode())
except:
pass
pd(read('ip.txt'))
三次理解
想了一下,其实可以拆分成3个模块,这样也许会更好
读取、判断、写入
# 一批ip文本,读取ip,然后判断这个ip的80端口上面有没有部署网站,
# 如果有,就把这个网站首页的内容写入文本
import requests
#从文本中读取ip
def read(ip):
with open(ip,'r',encoding='utf-8') as a:
return a.read().splitlines()
#判断ip是否开放80
def pd(ips):
for i in ips:
url = 'http://'+i+':80'
try:
if requests.get(url).status_code == 200:
return url
except:
pass
#开放的话写入在text.txt中
def xr(url):
with open('text.txt','w',encoding='utf-8')as a:
a.write(requests.get(url).content.decode('utf-8'))
ips = read('ip.txt')
urls = pd(ips)
xr(urls)
心得体会
标签:url,ip,练习,ips,read,网页内容,80,txt From: https://www.cnblogs.com/JFSec/p/17798280.html把具体实现的功能点写在方法中,需要用到的话直接调用就行,这样确实方便多了,而且后面有需要对代码调整,只需要修改对应的方法即可;用顺序结构的话,可能就得改很多东西了,而且改了后可能就运行不起来了,后面能用方法表达的尽量用方法,这样不仅可阅读性更好,而且后期维护起来也更方便