构建一个基于CentOS的Python爬虫项目涉及多个步骤,包括环境设置、选择合适的爬虫框架、编写爬虫代码、数据存储以及部署。以下是一个详细的步骤指南:
CentOS默认安装的Python版本可能较旧,建议安装Python 3.x。
sudo yum install -y python3
pip是Python的包管理工具,用于安装和管理Python包。
sudo yum install -y python3-pip
使用虚拟环境可以隔离项目依赖,避免全局环境污染。
sudo pip3 install virtualenv
virtualenv venv
source venv/bin/activate
常用的Python爬虫框架有Scrapy、BeautifulSoup、Requests等。这里以Scrapy为例。
pip install scrapy
在虚拟环境中创建一个新的Scrapy项目。
scrapy startproject myspider
cd myspider
在myproject/myproject/spiders目录下创建一个新的爬虫文件,例如example_spider.py。
import scrapy
class ExampleSpider(scrapy.Spider):
name = 'example'
allowed_domains = ['example.com']
start_urls = ['http://example.com']
def parse(self, response):
self.log('Visited %s' % response.url)
# 解析网页内容
title = response.xpath('//title/text()').get()
yield {'title': title}
编辑settings.py文件,配置爬虫的各种参数,例如User-Agent、并发数等。
BOT_NAME = 'myproject'
SPIDER_MODULES = ['myproject.spiders']
NEWSPIDER_MODULE = 'myproject.spiders'
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
ROBOTSTXT_OBEY = True
CONCURRENT_REQUESTS = 16
爬取的数据可以存储在多种格式中,例如JSON、CSV、数据库等。
在命令行中运行爬虫并指定输出格式。
scrapy crawl example -o items.json
scrapy crawl example -o items.csv -t csv
可以使用Scrapy的Item Pipeline将数据存储到数据库中。首先定义Item,然后在Pipeline中处理数据。
# items.py
import scrapy
class ExampleItem(scrapy.Item):
title = scrapy.Field()
# pipelines.py
import pymongo
class MongoPipeline(object):
collection_name = 'example'
def __init__(self, mongo_uri, mongo_db):
self.mongo_uri = mongo_uri
self.mongo_db = mongo_db
@classmethod
def from_crawler(cls, crawler):
return cls(
mongo_uri=crawler.settings.get('MONGO_URI'),
mongo_db=crawler.settings.get('MONGO_DATABASE', 'items')
)
def open_spider(self, spider):
self.client = pymongo.MongoClient(self.mongo_uri)
self.db = self.client[self.mongo_db]
def close_spider(self, spider):
self.client.close()
def process_item(self, item, spider):
self.db[self.collection_name].insert_one(dict(item))
return item
在settings.py中配置MongoDB连接信息。
MONGO_URI = 'mongodb://localhost:27017'
MONGO_DATABASE = 'mydatabase'
ITEM_PIPELINES = {
'myproject.pipelines.MongoPipeline': 300,
}
Supervisor是一个进程控制系统,可以用来管理Scrapy爬虫的运行。
安装Supervisor:
sudo yum install -y supervisor
配置Supervisor:
[program:myspider]
command=scrapy crawl example
directory=/path/to/your/project
autostart=true
autorestart=true
stderr_logfile=/var/log/myspider.err.log
stdout_logfile=/var/log/myspider.out.log
启动Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start myspider
通过以上步骤,你可以在CentOS上构建一个完整的Python爬虫项目。根据具体需求,你可以进一步扩展和优化项目。