做过爬虫的应该都知道,在爬取反爬比较强的网站如果同一时间获取的数据量过大就会导致封IP,例如豆瓣,搜狗之类的。那么我们我们的策略就是搭建自己的代理池,Cookie池,使得爬虫更像是普通用户在操作一样以此来解决目标网站封IP的问题。在网上有大量公开的免费代理,如果经济基础可以的话,我们也可以购买付费的代理IP,用过的人也应该知道,无论是免费的还是付费的,其实都不能保证是可用的,因为可能此IP也会被其他人用来爬取同样的目标站点而封禁,或者代理服务器突然发生故障或网络繁忙。一旦我们选用了一个不可用的代理,这势必会影响爬虫的工作效率。所以我们需要提前做筛选,将不可用的代理剔除掉,从而保留可用的代理。
生成cookie
我们使用chrome driver来进行登录和cookie的生成
import os
import time
import zipfile
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
class GenCookies(object):
USER_AGENT = open(‘useragents.txt’).readlines()
# 16yun 代理配置
PROXY_HOST = ‘t.16yun.cn’ # proxy or host
PROXY_PORT = 31111 # port
PROXY_USER = ‘USERNAME’ # username
PROXY_PASS = ‘PASSWORD’ # password
@classmethod
def get_chromedriver(cls, use_proxy=False, user_agent=None):
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy