小甲鱼python56讲中使用代理ip问题
小甲鱼视频中www.whatismyip.com.tw 大陆用不了就自己找了个测ip的网站http://ip.t086.com
然后找了代理ip的网站https://proxy.mimvp.com/freeopen
代码如下
import urllib.request
url='http://ip.t086.com/'
proxy_support=urllib.request.ProxyHandler({'http':'118.24.88.66:1080'})
opener=urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)
response=urllib.request.urlopen(url)
html=response.read().decode('GBK')
print(html)
试了很多很多全是失败的
是测IP网站的问题还是 代理本身的问题 还是我的代码有问题啊 可以试试这个
https://www.kuaidaili.com/free/
这个试下来是可以的
import requests
url='https://www.kuaidaili.com/free/'
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}
proxy={'http':'118.212.106.81:9999'}
response=requests.get(url=url,headers=headers,proxies=proxy)
print(response)
html=response.content.decode()
print(html) 疾风怪盗 发表于 2020-9-21 20:13
可以试试这个
https://www.kuaidaili.com/free/
这个试下来是可以的
我想实现小甲鱼课件中那样的效果,可以帮帮我吗大佬,requests我还没学到- - 阿匠 发表于 2020-9-21 21:15
我想实现小甲鱼课件中那样的效果,可以帮帮我吗大佬,requests我还没学到- -
不知道你说的效果是什么。。。。。。。
requests模块不是更方便么,为什么不用呢?都是一样的步骤 疾风怪盗 发表于 2020-9-21 21:23
不知道你说的效果是什么。。。。。。。
requests模块不是更方便么,为什么不用呢?都是一样的步骤
我的意思是想用一个ip查询的网站来检查我现在使用的ip地址是多少,然后在idle里面打印出来{:5_96:} 阿匠 发表于 2020-9-21 21:28
我的意思是想用一个ip查询的网站来检查我现在使用的ip地址是多少,然后在idle里面打印出来
尝试了下
http://icanhazip.com
http://httpbin.org/ip
这两个应该是检测当前上网IP的
但是都不行
疾风怪盗 发表于 2020-9-21 22:07
尝试了下
http://icanhazip.com
http://httpbin.org/ip
那我改怎样用python检查我有没有用了代理ip啊。难受住… 阿匠 发表于 2020-9-21 22:11
那我改怎样用python检查我有没有用了代理ip啊。难受住…
那不知道,而且我的代码也不对,用的是http的IP上https,也不能证明这个IP是否有效
这段代码应该是对的,应该是没找到能上网的IP,多试几个试试看
import requests
'''代理IP地址(高匿)'''
proxy = {
'http': 'http://117.85.105.170:808',
'https': 'https://117.85.105.170:808'
}
'''head 信息'''
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
'Connection': 'keep-alive'}
'''http://icanhazip.com会返回当前的IP地址'''
p = requests.get('http://icanhazip.com', headers=head, proxies=proxy)
print(p.text) 本帖最后由 疾风怪盗 于 2020-9-21 22:40 编辑
阿匠 发表于 2020-9-21 22:11
那我改怎样用python检查我有没有用了代理ip啊。难受住…
你看这个可以了,https的代理IP,用的有道翻译的接口,返回了IP的地址信息
之前发的代码应该也有效的,就是IP有没有用不知道了,代码里加个timeout=6,超时了就说明无效IP
要检测,可以把免费IP全爬下来之后,按个检测试试,说不定能测出来哪个有效的
网址:http://www.kxdaili.com/dailiip/1/2.html
下面这个代理IP是在这上面,测试了5个后找到的
import requests
url='https://foundation.youdao.com/ip/ipinfo'
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}
proxy={'https':'58.220.95.90:9401'}
response=requests.get(url=url,headers=headers,proxies=proxy)
print(response)
html=response.content.decode()
print(html)
试一下,爬下来,难得会有2、3个有效的免费代理IP
import requests
from lxml import etree
import re
import time
class Get_Free_Ip():
def __init__(self):
self.url1='http://www.kxdaili.com/dailiip/{}/{}.html'
self.headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36 Edg/85.0.564.51'}
def Get_Url1_data(self):
ip_data_list1=[]
for type_num in range(0,2):
for page_num in range(0,10):
start_url=self.url1.format(type_num+1,page_num+1)
print(start_url)
response=requests.get(url=start_url,headers=self.headers)
html_str=response.content.decode()
#print(html_str)
patten='<td>(.*?)</td>'
ip_data_temp=re.findall(patten,html_str)
for each in range(0,len(ip_data_temp),7):
ip_data = {}
ip_data['IP地址']=ip_data_temp
ip_data['端口'] = ip_data_temp
ip_data['代理类型'] = ip_data_temp
ip_data_list1.append(ip_data)
time.sleep(1)
#print(ip_data_list1)
return ip_data_list1
def Change_data(self,ip_data_list):
new_list=[]
for each in ip_data_list:
each['代理类型'] = each['代理类型'].split(',')
for i in each['代理类型']:
new_list_temp = {}
if i=='HTTP':
new_list_temp['http'] = each['IP地址'] + ':' + each['端口']
elif i=='HTTPS':
new_list_temp['https'] = each['IP地址'] + ':' + each['端口']
new_list.append(new_list_temp)
print(new_list)
return new_list
def Check_httpip(self,new_list):
'''代理IP地址(高匿)'''
new_list_active=[]
for proxy in new_list:
print(f'开始检测{proxy}...')
if 'http' in proxy.keys() :
'''http://icanhazip.com会返回当前的IP地址'''
try:
response = requests.get(url='http://icanhazip.com', headers=self.headers, proxies=proxy,timeout=3)
print(f'返回结果:{response.text}')
new_list_active.append(proxy)
time.sleep(1)
except:
print(f'{proxy}未返回结果,无效...')
elif 'https' in proxy.keys() :
try:
response = requests.get(url='https://foundation.youdao.com/ip/ipinfo', headers=self.headers, proxies=proxy,timeout=3)
print(f'返回结果:{response.text}')
new_list_active.append(proxy)
time.sleep(1)
except:
print(f'{proxy}未返回结果,无效...')
print(new_list_active)
if len(new_list_active)>0:
self.Save_To_Txt(new_list_active)
else:
print('无有效免费代理IP地址')
def Save_To_Txt(self,list):
with open('免费代理IP地址.txt', mode='w', encoding='utf-8') as f:
for each in list:
f.write(str(each))
f.write('\n')
def Run(self):
#http://www.kxdaili.com/dailiip/1/1.html
ip_data_list1=self.Get_Url1_data()
new_list=self.Change_data(ip_data_list1)
self.Check_httpip(new_list)
if __name__ == '__main__':
get_freeip=Get_Free_Ip()
get_freeip.Run()
疾风怪盗 发表于 2020-9-22 12:39
试一下,爬下来,难得会有2、3个有效的免费代理IP
大佬太给力啦,谢谢 我运行代码之后,用得到ip去改电脑代理之后,也不能搜索ip看到自己的ip地址 疾风怪盗 发表于 2020-9-21 21:23
不知道你说的效果是什么。。。。。。。
requests模块不是更方便么,为什么不用呢?都是一样的步骤
大佬,我返回的时候idle提示我是一千多行的代码,这是咋回事啊?
页:
[1]