Scrapy爬虫(3)爬取中国高校前100名并写入MongoDB

简介: 在以前 的分享中,我们利用urllib和BeautifulSoup模块爬取中国高校排名前100名并将其写入MySQL.在本次分享中,我们将会用到Scrapy和BeautifulSoup模块,来爬取中国高校排名前100名并将其写入MongoDB数据库。

在以前 的分享中,我们利用urllib和BeautifulSoup模块爬取中国高校排名前100名并将其写入MySQL.在本次分享中,我们将会用到Scrapy和BeautifulSoup模块,来爬取中国高校排名前100名并将其写入MongoDB数据库。爬取的网页为:http://gaokao.xdf.cn/201702/10612921.html, 截图如下(部分):
这里写图片描述
首先登陆MongoDB数据库,创建好testdb数据库和university_rank集合(collection)。然后开始着手写Scrapy爬虫。
完整的Python代码如下:

#import modules
import bs4
import scrapy
import pymongo
from bs4 import BeautifulSoup
from pymongo import MongoClient

class UniversityRankSpider(scrapy.Spider):
    name = "university-rank"  #name of spider
    start_urls = ['http://gaokao.xdf.cn/201702/10612921.html',]  #url of website

    def parse(self, response):  #parse function
        content = response.xpath("//tbody").extract()[0]
        soup = BeautifulSoup(content, "lxml")  #use BeautifulSoup      
        table = soup.find('tbody')
        count = 0 
        lst = []   # list to save data from the table
        for tr in table.children:  #BeautifulSoup grammmer
            if isinstance(tr, bs4.element.Tag):
                td = tr('td')
                if count >= 2:  #ingore the first line
                    lst.append([td[i]('p')[0].string.replace('\n','').replace('\t','') for i in range(8)])
                count += 1

        conn = MongoClient('mongodb://localhost:27017/')  #connect mongodb
        db = conn.testdb

        for item in lst:  #insert data into university_rank table
            db.university_rank.insert([
            {'rank':'%s'%item[0], 'university':'%s'%item[1], 'address':'%s'%item[2], 'local_rank':'%s'%item[3],
                 'total grade':'%s'%item[4], 'type':'%s'%item[5], 'star rank':'%s'%item[6], 'class':'%s'%item[7]},
        ]) 

        print 'Successfully downloading data from website, and write it to mongodb database!'

Scrapy爬虫的运行结果如下:
这里写图片描述
接下来我们去robo3t中查看mongodb数据库,其中的university_rank集合如下:
这里写图片描述
Bingo,我们成功地把数据写入了mongodb数据库!



本次分享到此结束, 欢迎大家批评与交流~~

目录
相关文章
|
11月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
1197 0
分布式爬虫框架Scrapy-Redis实战指南
|
10月前
|
数据采集 前端开发 JavaScript
Scrapy结合Selenium实现搜索点击爬虫的最佳实践
Scrapy结合Selenium实现搜索点击爬虫的最佳实践
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
614 6
|
9月前
|
数据采集 存储 监控
Scrapy框架下地图爬虫的进度监控与优化策略
Scrapy框架下地图爬虫的进度监控与优化策略
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
654 4
|
数据采集 中间件 API
在Scrapy爬虫中应用Crawlera进行反爬虫策略
在Scrapy爬虫中应用Crawlera进行反爬虫策略
|
消息中间件 数据采集 数据库
小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQLite
小说爬虫-02 爬取小说详细内容和章节列表 推送至RabbitMQ 消费ACK确认 Scrapy爬取 SQLite
191 2
|
消息中间件 数据采集 数据库
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
小说爬虫-03 爬取章节的详细内容并保存 将章节URL推送至RabbitMQ Scrapy消费MQ 对数据进行爬取后写入SQLite
250 1
|
数据采集 SQL 数据库
小说爬虫-01爬取总排行榜 分页翻页 Scrapy SQLite SQL 简单上手!
小说爬虫-01爬取总排行榜 分页翻页 Scrapy SQLite SQL 简单上手!
426 0
|
7月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”

推荐镜像

更多