该篇文章搬运自个人博客园:darkchii - 博客园
主题
程序简介
- 这是一个通过免费代理网站爬取代理ip的python程序
程序结构
结构列表
- freeProxy
__init__.py
proxypool.py
proxyweb.py
结构图
文件介绍
__init__.py
- 该文件中什么也没有。
proxypool.py
- 该文件中则是后面给出的源码。
简介:
其中
ProxyIpPool
类中有get_kuaidaili_proxy_ip
、get_data5u_proxy_ip
两个方法提供接口可以从两家不同的代理网站中爬取代理ip。两个方法的接口:
get_kuaidaili_proxy_ip
方法返回的是字典:{'ip':ip,'port':port,'type':type,'position':position}
。get_data5u_proxy_ip
方法返回的是字典:
{'ip':iplist,'port':portlist,'type':typelist,'nation':nationlist}
。这意味着可以调用这两个方法根据自己喜爱的方式编写接口来连接到两个方法。
包中还有两个建立代理池的方法:
create_kuaidaili_proxy_ip_pool
、create_data5u_proxy_ip_pool
根据两个网站的不同可以同步代理池。具体细节还请自行阅读代码。
proxyweb.py
- 该文件中是代理网站的链接。
源码
from bs4 import BeautifulSoup
from freeProxy import proxyweb
from requests import Session
from time import sleep
import random
import re, os
class ProxyIpPool(object):
r = Session()
def __init__(self,page=None,url=proxyweb.kuaidaili):
object.__init__(self)
self.page = page
self.url = url
def get_kuaidaili_proxy_ip(self):
tablelist = ['IP', 'PORT', '类型', '位置']
ip = []
port = []
type = []
position = []
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',
'Host': 'www.kuaidaili.com',
'Upgrade-Insecure-Requests': '1',