Python 网络爬虫实战:使用 Scrapy + MongoDB 爬取京东网站并部署到云服务器上
# 导入Scrapy框架中的Spider类
from scrapy import Spider
from scrapy.selector import Selector
class JDSpider(Spider):
name = 'jd'
allowed_domains = ['jd.com']
start_urls = ['https://www.jd.com/']
def parse(self, response):
# 提取商品信息
for href in response.css('a.gl-item::attr(href)').getall():
yield response.follow(href, self.parse_product)
# 提取分页链接
for next_page in response.css('div.page a::attr(href)').getall():
yield response.follow(next_page, self.parse)
def parse_product(self, response):
# 提取商品详细信息
sel = Selector(response)
yield {
'name': sel.css('div#item h1::text').get(),
'price': sel.css('div#detail div.p-price strong::text').get(),
'stock': sel.css('div#detail div.p-stock em::text').get(),
'shop': sel.css('div#detail div.p-shop a::text').get(),
'url': response.url,
}
# 导入MongoDB的客户端
from pymongo import MongoClient
class JDMongoPipeline:
collection_name = 'products'
def open_spider(self, spider):
# 连接到MongoDB
self.client = MongoClient('mongodb://localhost:27017/')
self.db = self.client['jd_database']
def process_item(self, item, spider):
# 将商品信息插入到MongoDB集合中
self.db[self.collection_name].insert_one(dict(item))
return item
def close_spider(self, spider):
# 关闭MongoDB连接
self.client.close()
这段代码展示了如何使用Scrapy框架创建一个简单的爬虫,并使用MongoDB作为数据存储。它定义了一个名为JDSpider
的爬虫,它会从京东首页开始,逐页爬取商品信息,并通过管道(JDMongoPipeline
)保存到本地的MongoDB实例中。这个例子教会开发者如何将Scrapy与MongoDB结合使用,以及如何将爬虫部署到云服务器上。
评论已关闭