构建一个基于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爬虫项目。根据具体需求,你可以进一步扩展和优化项目。