Skip to content

基于scrapy-redis scrapy-splash的通用爬虫(包括ajax请求的数据)

Notifications You must be signed in to change notification settings

violetmooncd/totalstsation_scrapy

 
 

Repository files navigation

网站通用爬虫 scrapy-splash and scrapy-redis

scrapy redis splash高度结合

主要框架:

  • scrapy
  • scrapy-splash
  • scrapy-redis

splash 可以采用负载均衡,多节点部署。

scrapy 爬虫也需要多节点部署。单机全站爬取太慢。


splash 安装

安装教程 官方文档


数据表结构

表结构在项目下的models.py中

python3 models.py

测试环境下的分布式splash

宿主机安装 nginx

apt install nginx -y
# or
yum install nginx -y

启动splash 容器

sudo ./create_splash.sh

修改 nginx 的配置文件(/etc/nginx/nginx.conf),在 http 中增加

upstream splash {
    least_conn;
    server 127.0.0.1:8051;
    server 127.0.0.1:8052;
    server 127.0.0.1:8053;
    server 127.0.0.1:8054;
    server 127.0.0.1:8055;
}
server {
    listen 8050;
    location / {
        proxy_pass http://splash;
        proxy_connect_timeout 300;
        proxy_read_timeout 400;
    }
}

重新加载 nginx 配置文件

nginx -s reload

测试环境下docker启动爬虫

git clone http://git.epmap.org/tao.liu/totalstation_spider.git

cd totalstation_spider

请修改 .env_sample 文件

# 编译镜像
docker build -t totalspider:v1 .

# 启动docker容器
docker run -itd --name xxx totalspider:v1

然后向redis 中添加代爬取的网站,

# 连接redis
redis-cli -h xx.xx.xx.xx -p xxxx

# 向redis中添加数据
lpush waiting_for_crawl:start_urls http://www.gov.cn

爬虫已经开始全站爬取。

TODO

  • 网页返回数据去重复
  • 网页相似度检测
  • 监测网页更新

About

基于scrapy-redis scrapy-splash的通用爬虫(包括ajax请求的数据)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.8%
  • Shell 1.7%
  • Dockerfile 1.5%