Python爬虫实战之:快代理搭建IP代理池(Scrapy进阶版)

本文详细介绍了如何使用Python的Scrapy框架搭建一个IP代理池,通过爬取快代理网站数据,验证并存储到PostgreSQL数据库。内容涵盖项目背景、Scrapy组件解析、数据库连接、代码逻辑及启动爬虫等步骤。
摘要由CSDN通过智能技术生成

前言

你好,我是Dr.叶子,用心写最优美的博客,弹最好听的钢琴!

项目背景

项目简介

本项目主要基于Scrapy框架搭建爬虫,爬取快代理网站的IP数据,经过有效性验证后,储存到PostgreSQL,形成IP代理池,方便以后开展更多的爬虫项目,能防止个人IP被封锁。

前期准备

  1. 操作系统:Windows 8.1;
  2. 语言版本:Python 3.7;
  3. 开发工具:Pycharm 2.1 专业版;
  4. 数据库:PostgresSQL 最新版;
  5. Scrapy框架:1.5.1 版本;
  6. requests 库:发起请求;
  7. faker 库:自动随机生成 user-agent;
  8. psycopg2 库:连接PostgresSQL 用;

 

讲解1:项目搭建

1. Scrapy的安装: 打开 Pycharm 的 Terminal 命令终端执行

# 方法1:直接安装
pip install scrapy

# 方法2:若连接超时,则切换国内镜像
pip install scrapy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

Terminal 命令终端随便一个目录下都行,只要你的 Python 环境配置了系统环境变量。最好还是cd到你要存放项目的文件夹下吧,方便后面操作!

 
2. 新建一个工程: 打开 Pycharm 的 Terminal 命令终端

# cd 进入到你要存放该工程的目录,然后执行下面命令
scrapy startproject proxy

在这里插入图片描述

proxy: 工程名称;

 
3. 构建爬虫spider: cd 进入该工程目录下执行

scrapy genspider kuaidaili www.kuaidaili.com

在这里插入图片描述

kuaidaili: 爬虫名称;
www.kuaidaili.com: 爬虫的域名(按代码写的为准,图片是旧的截图);
一个工程中可以存在多个spider爬虫, 但是名字必须唯一

 
4. 进入工程: Pycharm打开项目,进入到proxy工程

在这里插入图片描述

 
5.查看工程结构

proxy
├── proxy
│   ├── __init__.py
│   ├── items.py        # Items的定义,定义抓取的数据结构
│   ├── middlewares.py  # 定义Spider和DownLoader的Middlewares中间件实现。 
│   ├── pipelines.py    # 它定义Item Pipeline的实现,即定义数据管道
│   ├── settings.py     # 它定义项目的全局配置
│   └── spiders         # 其中包含一个个Spider的实现,每个Spider都有一个文件
│       ├── __init__.py
│       └── kuaidaili.py  # 爬虫文件
└── scrapy.cfg    #Scrapy部署时的配置文件,定义了配置文件路径、部署相关信息等内容

在这里插入图片描述

到这里,一个Scrapy爬虫项目的基础架构初现,接下来就是完成业务逻辑,实现爬数据、存数据的功能。


 

讲解2:理解Scrapy框架

1. 数据流图: 来自官网
在这里插入图片描述

具体处理步骤,请参阅: Scrapy 官方文档

 
2. Scrapy 组件介绍:

  • Scrapy Engine(Scrapy引擎)
    引擎负责控制所有组件之间的数据流 系统,并在发生某些操作时触发事件(框架核心)。

  • Scheduler(调度程序)
    接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回。

  • Downloader(下载器)
    下载网页内容, 并将网页内容返回给爬虫程序

  • Spiders(爬虫)
    爬虫是用户编写的自定义类,用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。可以从中提取出链接,让Scrapy继续抓取下一个页面。

  • Item 项目
    定义爬取结果的数据结构,爬取的数据会赋值成改Item对象。

  • Pipeline(项目管道)
    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

  • Downloader Middlewares(下载器中间件)
    位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

  • Spider Middlewares(爬虫中间件)
    介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。

  • Scheduler Middewares(调度中间件)
    介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。


 

讲解3:Python连接PostgresSQL

1. 安装 psycopg2 库: 连接postgres数据库必须的库

# 用豆瓣等国内镜像加速下载
pip install psycopg2 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

 
2. 初步使用:

# 步骤1:定义数据库连接参数
database = "proxy"
user = "postgres"
password = "123456"
host = "localhost"
port = "5432"

# 步骤2:连接数据库
db = psycopg2.connect(database=database, user=user,
                           password=password, host=host, port=port)

# 步骤3:开启游标
cur = self.db.cursor()

# 步骤4:利用游标执行数据库的“增、删、查、改”
... ...

# 步骤5:最后记得关闭数据库的连接和游标
db.close()
cur.close()

在项目中的具体使用,请看后面讲解和代码~


 

讲解4:创建IP代理池数据库

-- 建表
CREATE TABLE if not exists proxy
(
	id SERIAL PRIMARY KEY,
	ip varchar(15),
	port varchar(6),
	degree varchar(10),
	type varchar(10),
	position varchar(128),
	operator varchar(6),
	speed float(53),
	last_time timestamp
);

-- 表注释
COMMENT ON TABLE proxy IS '代理池表';
--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值