Python+MongoDB 爬虫实战

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

工具准备及爬虫搭建


Scrapy(python写成的爬虫框架)

在前一篇 Scrapy爬虫入门 里有写到Scrapy的安装和基本使用,他的特点是每个不同的page都自己定制一个不同的Spider,通过

scrapy crawl spidername -o file -t json

的方法运行爬虫程序并且以json形式保存到目标文件里(当然后面 -o -t 两项可以省略)。而且python代码很少,实现很方便。简单看下python的语法就可以轻松上手。

顺便以Java开发者和python小白用户的角度阐述下我对python语法的总结:

  1. 句末不带分号
  2. if,while,for不带大括号
  3. 变量不用声明,比js声明还简单
  4. 三个主要数据结果:字典,列表,元组
  5. 没有好的IDE,全靠自己声明:包的导入要自己声明,异常要自己声明
  6. 代码短小,给我很强烈的空虚感

MongoDB(带上pymongo和mongo-java-driver)

很早以前就想实践下MongoDB,早早的看过《MongoDB权威指南》,却一直没有机会实战,亏得毕设可以让我有了需求驱动。因为MongoDB以BSON的形式存储对象,所以我觉得蛮适合存储Scrapy的json爬取结果,由pymongo进行交互。爬取到的数据后期会交由solr搭建搜索服务,所以也装上了java的driver看看读取结果。

java-driver的简单操作

pymongo的简单操作


数据尝试

以CSDN博客里的数据练手,爬取CSDN各博客内的博文内容数据。先爬取热门文章页面上的一些博主名字和url:

{
    'username' : 'xxx',
    'url' : 'http://blog.csdn.net/xxx/article/list/n'
}
然后爬取该博主所有的文章url链接,再爬取每份url链接里的内容,存到MongoDB里:

{
    'user' : 'xxx',
    'title' : 'xxxxx',
    'tag' : ['xx', 'xx', 'xx'],
    'content' : 'xxxxxxxxxxxxxxxxxxxxxxxx' 
}


总结

有一些技术是由需求驱动才去尝试学习;有一些问题只要具备一定的执行力就能发现。

MongoDB读取性能如何?他的自动分片怎么得以体现?自带的js版mapreduce如何利用?

如何将Scrapy做成一种服务?python语言的各种实践?

今后的数据会设计论文,个人主页,这里的CSDN博客数据只是整条道路的铺垫。不过对整个学习和探索过程我还是充满期待,哈哈。

项目地址https://github.com/zbf8441372/VerticleSearchEngine



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
14天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
18天前
|
数据采集 Python
【python】爬虫-西安医学院-校长信箱
本文以西安医学院-校长信箱为基础来展示爬虫案例。来介绍python爬虫。
【python】爬虫-西安医学院-校长信箱
|
19天前
|
存储 缓存 JavaScript
python实战篇:利用request库打造自己的翻译接口
python实战篇:利用request库打造自己的翻译接口
31 1
python实战篇:利用request库打造自己的翻译接口
|
5天前
|
API 数据库 数据安全/隐私保护
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】Django REST framework (DRF) 是用于构建Web API的强力工具,尤其适合Django应用。本文深入讨论DRF面试常见问题,包括视图、序列化、路由、权限控制、分页过滤排序及错误处理。同时,强调了易错点如序列化器验证、权限认证配置、API版本管理、性能优化和响应格式统一,并提供实战代码示例。了解这些知识点有助于在Python面试中展现优秀的Web服务开发能力。
22 1
|
2天前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
13 0
|
2天前
|
人工智能 Python
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
7 0
|
4天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
5天前
|
SQL 中间件 API
Flask框架在Python面试中的应用与实战
【4月更文挑战第18天】**Flask是Python的轻量级Web框架,以其简洁API和强大扩展性受欢迎。本文深入探讨了面试中关于Flask的常见问题,包括路由、Jinja2模板、数据库操作、中间件和错误处理。同时,提到了易错点,如路由冲突、模板安全、SQL注入,以及请求上下文管理。通过实例代码展示了如何创建和管理数据库、使用表单以及处理请求。掌握这些知识将有助于在面试中展现Flask技能。**
12 1
Flask框架在Python面试中的应用与实战
|
6天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
128 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
6天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
26 6