电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python爬蟲構建代理ip池抓取數據庫的示例代碼

瀏覽:2日期:2022-07-10 13:18:57

爬蟲的小伙伴,肯定經常遇到ip被封的情況,而現在網絡上的代理ip免費的已經很難找了,那么現在就用python的requests庫從爬取代理ip,創建一個ip代理池,以備使用。

本代碼包括ip的爬取,檢測是否可用,可用保存,通過函數get_proxies可以獲得ip,如:{’HTTPS’: ’106.12.7.54:8118’}

下面放上源代碼,并詳細注釋:

import requestsfrom lxml import etreefrom requests.packages import urllib3import random, time urllib3.disable_warnings() def spider(pages, max_change_porxies_times=300): ''' 抓取 XiciDaili.com 的 http類型-代理ip-和端口號 將所有抓取的ip存入 raw_ips.csv 待處理, 可用 check_proxies() 檢查爬取到的代理ip是否可用 ----- :param pages:要抓取多少頁 :return:無返回 ''' s = requests.session() s.trust_env = False s.verify = False urls =com/nn/{}’ proxies = {} try_times = 0 for i in range(pages): url = urls.format(i + 1) s.headers = { ’Accept’: ’text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8’, ’Accept-Encoding’: ’gzip, deflate, br’, ’Accept-Language’: ’zh-CN,zh;q=0.9’, ’Connection’: ’keep-alive’, ’Referer’: urls.format(i if i > 0 else ’’), ’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36’} while True: content = s.get(url, headers=s.headers, proxies=proxies) time.sleep(random.uniform(1.5, 4)) # 每讀取一次頁面暫停一會,否則會被封 if content.status_code == 503: # 如果503則ip被封,就更換ipproxies = get_proxies()try_times += 1print(f’第{str(try_times):0>3s}次變更,當前{proxies}’)if try_times > max_change_porxies_times: print(’超過最大嘗試次數,連接失敗!’) return -1continue else:break # 如果返回碼是200 ,就跳出while循環,對爬取的頁面進行處理 print(f’正在抓取第{i+1}頁數據,共{pages}頁’) for j in range(2, 102): # 用簡單的xpath提取http,host和port tree = etree.HTML(content.text) http = tree.xpath(f’//table[@id='ip_list']/tr[{j}]/td[6]/text()’)[0] host = tree.xpath(f’//table[@id='ip_list']/tr[{j}]/td[2]/text()’)[0] port = tree.xpath(f’//table[@id='ip_list']/tr[{j}]/td[3]/text()’)[0] check_proxies(http, host, port) # 檢查提取的代理ip是否可用 def check_proxies(http, host, port, test_url=’http://www.baidu.com’): ''' 檢測給定的ip信息是否可用 根據http,host,port組成proxies,對test_url進行連接測試,如果通過,則保存在 ips_pool.csv 中 :param http: 傳輸協議類型 :param host: 主機 :param port: 端口號 :param test_url: 測試ip :return: None ''' proxies = {http: host + ’:’ + port} try: res = requests.get(test_url, proxies=proxies, timeout=2) if res.status_code == 200: print(f’{proxies}檢測通過’) with open(’ips_pool.csv’, ’a+’) as f:f.write(’,’.join([http, host, port]) + ’n’) except Exception as e: # 檢測不通過,就不保存,別讓報錯打斷程序 print(e) def check_local_ip(fn, test_url): ''' 檢查存放在本地ip池的代理ip是否可用 通過讀取fn內容,加載每一條ip對test_url進行連接測試,鏈接成功則儲存在 ips_pool.csv 文件中 :param fn: filename,儲存代理ip的文件名 :param test_url: 要進行測試的ip :return: None ''' with open(fn, ’r’) as f: datas = f.readlines() ip_pools = [] for data in datas: # time.sleep(1) ip_msg = data.strip().split(’,’) http = ip_msg[0] host = ip_msg[1] port = ip_msg[2] proxies = {http: host + ’:’ + port} try: res = requests.get(test_url, proxies=proxies, timeout=2) if res.status_code == 200:ip_pools.append(data)print(f’{proxies}檢測通過’)with open(’ips_pool.csv’, ’a+’) as f: f.write(’,’.join([http, host, port]) + ’n’) except Exception as e: print(e) continue def get_proxies(ip_pool_name=’ips_pool.csv’): ''' 從ip池獲得一個隨機的代理ip :param ip_pool_name: str,存放ip池的文件名, :return: 返回一個proxies字典,形如:{’HTTPS’: ’106.12.7.54:8118’} ''' with open(ip_pool_name, ’r’) as f: datas = f.readlines() ran_num = random.choice(datas) ip = ran_num.strip().split(’,’) proxies = {ip[0]: ip[1] + ’:’ + ip[2]} return proxies if __name__ == ’__main__’: t1 = time.time() spider(pages=3400) t2 = time.time() print(’抓取完畢,時間:’, t2 - t1) # check_local_ip(’raw_ips.csv’,’http://www.baidu.com’)

以上就是python爬蟲構建代理ip池抓取數據庫的示例代碼的詳細內容,更多關于python爬蟲構建代理ip池的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 课件导航网_ppt课件_课件模板_课件下载_最新课件资源分享发布平台 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 盐城网络公司_盐城网站优化_盐城网站建设_盐城市启晨网络科技有限公司 | 档案密集架,移动密集架,手摇式密集架,吉林档案密集架-厂家直销★价格公道★质量保证 | 元拓建材集团官方网站 | 北京发电机出租_发电机租赁_北京发电机维修 - 河北腾伦发电机出租 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 荣事达手推洗地机_洗地机厂家_驾驶式扫地机_工业清洁设备 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 干培两用箱-细菌恒温培养箱-菲斯福仪器 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 知网论文检测系统入口_论文查重免费查重_中国知网论文查询_学术不端检测系统 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 黑龙江京科脑康医院-哈尔滨精神病医院哪家好_哈尔滨精神科医院排名_黑龙江精神心理病专科医院 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 西子馋火锅鸡加盟-太原市龙城酉鼎餐饮管理有限公司 | 哔咔漫画网页版在线_下载入口访问指引 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 罗氏牛血清白蛋白,罗氏己糖激酶-上海嵘崴达实业有限公司 | 出国劳务公司_正规派遣公司[严海]| 湖南成人高考报名-湖南成考网 | 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 耐腐蚀泵,耐腐蚀真空泵,玻璃钢真空泵-淄博华舜耐腐蚀真空泵有限公司 | 广东西屋电气有限公司-广东西屋电气有限公司| 新疆系统集成_新疆系统集成公司_系统集成项目-新疆利成科技 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 一路商机网-品牌招商加盟优选平台-加盟店排行榜平台 | 排烟防火阀-消防排烟风机-正压送风口-厂家-价格-哪家好-德州鑫港旺通风设备有限公司 | 国产液相色谱仪-超高效液相色谱仪厂家-上海伍丰科学仪器有限公司 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 |