在这里我们用Python来实现,话不多说直接上代码吧:
一开始我是使用的urllib模块来进行爬取,但问题还是有的,只能爬第一页,之后我了解到了requests库,真的好用啊
import requests
import re
def getWebText(url):
try:
r = requests.get(url)
r.status_code #通过网页响应码来判断连接是否正常
#print(r.status_code)
r.encoding = r.status_code # 匹配网页编码格式
return r.text
except:
print("响应失败")
return 'Error'
def getIpList(url):
ip = []
html = getWebText(url)
"""
250-255 200-249 100-199 1-99
"""
ip = re.findall("(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)",html)
return ip
def display(ipList):
#print(type(ipList))
for ip in ipList:
str = ip[0]+'.'+ip[1]+'.'+ip[2]+'.'+ip[3]
List1.append(str)
def ipTxt(List1):
with open("C:\\Users\\HP\\Desktop\\xiciip.txt", 'r+') as f:
for i in List1:
f.write(i+'\n')
if __name__ == '__main__':
page = 1
url = "https://www.kuaidaili.com/free/inha/"
List1 = []
for i in range(30):
Url = url+str(i+1)+"/"
#print(Url)
ipList = []
ipList = getIpList(Url)
display(ipList)
ipTxt(List1)
爬去过程中出现的问题:
1.用re库的findall方法返回的数据是一个列表,但列表中的元素不是直接的字符串,而是一个元组:
('115', '150', '249', '216')这样很不方便使用和查看,所以我转换了一下(硬核转换,大牛勿喷)
等到代码跑完之后,就可以去自己的桌面的xici.txt里没有内容了