Closed wwt-13 closed 3 years ago
不知道是不是vscode的问题
## 建立ip代理池代码 ## 关键看ip_filter函数 import linecache import random import time import requests from lxml import etree # 初始化 base_url='https://www.kuaidaili.com/free/inha/{0}/' fake_headers={"Connection":"close","Accept-Encoding":"gzip, deflate, br","Referer":"https://www.kuaidaili.com/free/inha/"} s=requests.session() requests.adapters.DEFAULT_RETRIES = 5 # 设置重连接次数 # 利用session保存cookies,关闭多余连接 # cookie不到万不得已不用,因为使用selenium获取cookie的方法实在是太慢了 def headers_update(): a = random.randint(1,10036) user_agent = linecache.getline(r'C:\Users\86188\Desktop\商场网站\火车余票查询+提醒\user_agent_set.txt', a).strip('\n') fake_headers['User-Agent']=user_agent def get_ip(base_url,page,headers): # 每获取一页刷新一次headers # 这是https://www.kuaidaili.com/free/inha/ 网站的免费代理ip下载 # 传入url:https://www.kuaidaili.com/free/inha/{0}/ url=base_url.format(page) res=requests.get(url,headers) con=res.content.decode('utf-8') if res.status_code==200: html=etree.HTML(con) ip_list=html.xpath("//td[@data-title='IP']/text()") port_list=html.xpath("//td[@data-title='PORT']/text()") print(ip_list) print(port_list) return [ip+':'+port for ip,port in zip(ip_list,port_list)] else: print("ERROR:或许是爬取过于频繁导致ip被封") def ip_filter(result): # 筛选可用ip myfile=open("ip.txt","a+",encoding='utf-8') # 这里 for ip in result: myfile.write(ip) # print(ip) proxies = {'http': 'http://{ip}'.format(ip=ip)} # 两种访问模式 try: time.sleep(1) print('本次测试的ip是{0}'.format(ip)) s.keep_alive=False res=s.get("https://www.baidu.com/",headers=fake_headers,timeout=8,proxies=proxies) if res.status_code==200: # con=res.content.decode(res.apparent_encoding) # html=etree.HTML(con) # print(html.xpath('//title/text()')[0]) myfile.write(ip) # 还有这里 else: print('代理ip({0})无效'.format(ip)) except Exception as e: print(e) myfile.close() for page in range(1,200,1): # 先爬取200页吧 try: headers_update() temp_ip_set=get_ip(base_url,page,fake_headers) print('代理ip第{0}页爬取成功'.format(page)) ip_filter(temp_ip_set) print('代理ip第{0}页写入成功'.format(page)) except Exception as e: print(e)
更离谱的是这样也无法新建文件
f=open("ip.txt","w") f.close()
控制台没有报错?
控制台没报错,运行的很正常 现在我发现就是.py无法执行文件相关操作,但.ipynb却可以(具体入下图) .py文件 运行后无变化,无报错 .ipynb文件 运行成功
新建个文件或者项目再试试? 还真没听说过这种情况。。
不知道是不是vscode的问题
更离谱的是这样也无法新建文件