Python进阶篇:Python简单爬虫
目录
- 前言
- 要解决的问题
- 设计方案
- 代码说明
- 小结
前言
前一段一直在打基础,已经学习了变量,流程控制,循环,函数这几块的知识点,就想通过写写小程序来实践一下,来加深知识点的记忆和理解。首先考虑的就是爬虫啦,一直很崇拜爬虫大师,特别想能够学习一些爬虫技术,去淘宝上爬爬数据,说不定什么时候可以使用数据进行一些分析,比如哪天自己也开了个小店啥的~~。为了能够开始起步, 我看了一些视频,查阅了一些资料,起步阶段就不用那些很牛逼的框架了,主要是想通过基本的爬虫来了解爬虫的基本概念和思路。
要解决的问题
查阅百度百科的某个关键词以及相关联的关键词的集合。这是一个比较有意义的事情,通过这样的数据能更好的理解相关的生态圈。比如我查阅“分布式计算” http://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%A1%E7%AE%97/85448 文章里面含有很多的有链接的关键词,就这样不断的迭代去爬这些链接的关键词的文章内的关键词。
设计方案
爬虫含有5个组成部分:主程序,URL管理器,HTML下载器,HTML解析器,结果展示器
主程序:调度其他的部件的执行,并作为主程序入口来执行代码
URL管理器: 管理URL的集合以及状态 - 未下载的URL,已下载的URL,添加新的URL,去除已现在的URL
HTML下载器: 下载URL对应的HTML
HTML解析器: 解析下载下来的HTML,取出有用的数据
结果展示器: 组织最终生成的数据,并展示或者存储起来
代码说明
- 代码组织架构

- 代码展示
| 部件名称 | 程序名称 | 代码 |
| 主程序 | SpiderMain.py |
from Spider import UrlManager,HtmlDownloader,HtmlParser,HtmlOutputer
class Spider(object):
def __init__(self):
|
| URL管理器 | UrlManager.py |
class Manager(object): |
| HTML下载器 | HtmlDownloader.py |
import urllib.request class Downloader(object): |
| HTML解析器 | HtmlParser.py |
import re |
| 结果展示器 | HtmlOutputer.py |
class Outputer(object): |
- 最终的结果

小结
在上面的爬虫代码里面,主要体现了爬虫的几个部件之间的配合,以及每个部件的所引用的模块,比如urllib,bs4,re
Python进阶篇:Python简单爬虫的更多相关文章
- python 进阶篇 python 的值传递
值传递和引用传递 值传递,通常就是拷贝参数的值,然后传递给函数里的新变量,这样,原变量和新变量之间互相独立,互不影响. 引用传递,通常是指把参数的引用传给新的变量,这样,原变量和新变量就会指向同一块内 ...
- python进阶篇
python进阶篇 import 导入模块 sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到. import sys ...
- python根据正则表达式的简单爬虫
今天根据正则表达式简单的爬了一下大众点评,把北京的美食爬了爬,(店铺名,人均消费,地址) import re import urllib.request from urllib.request imp ...
- python+senium+chrome的简单爬虫脚本
简述: 开始接触python写web自动化的脚本主要源于在公司订阅会议室,主要是使用python+selenium+chromedriver驱动chrome浏览器来完成的,其中部分python代码可以 ...
- python第一篇-------python介绍
一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所 ...
- Python 进阶篇
作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/articles/5246483.html Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这 ...
- python练习1(简单爬虫)
做一个简单的练习 目标:爬取中文小说 目标网站:http://www.biqule.com/book_58/26986.html 只爬取正文部分. 使用requests库来获取网页信息,使用re库正则 ...
- python 进阶篇 函数装饰器和类装饰器
函数装饰器 简单装饰器 def my_decorator(func): def wrapper(): print('wrapper of decorator') func() return wrapp ...
- python放弃篇(Django/爬虫)
第一篇:Django系列 第二篇:爬虫系列 待续……
随机推荐
- 【译】第十篇 SQL Server代理使用代理帐户
本篇文章是SQL Server代理系列的第十篇,详细内容请参考原文 在这一系列的上一篇,你查看了msdb库下用于授权访问SQL Server代理的安全角色.这些角色包括SQLAgentUserRole ...
- vue dev开发环境跨域和build生产环境跨域问题解决
dev开发时解决请求跨域问题:config-index.js 配置代理dev: { env: require('./dev.env'), port: 8082, assetsSubDirectory: ...
- Unity 3(一):简介与示例
本文关注以下方面(环境为VS2012..Net Framework 4.5以及Unity 3): Ioc/DI简介: Unity简单示例 一.Ioc/DI简介 IoC 即 Inversion of C ...
- 当遇到not a dynamic executable时怎么做
当我使用ldd查找Drcom所缺少的32为库的时候提示not a dynamic executable 最后网上找到答案 来自http://forum.ubuntu.org.cn/viewtopic. ...
- python的面对对象
创建类 使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾: class ClassName: '类的帮助信息' #类文档字符串 class_suite #类体 类的帮助信息 ...
- Meltdown论文翻译【转】
转自:http://www.wowotech.net/basic_subject/meltdown.html#6596 摘要(Abstract) The security of computer sy ...
- Python基础之多线程事件Event
import threading,time class Boss(threading.Thread): def run(self): print("BOSS:伙计们今晚上加班到22:00&q ...
- C基础 旋转数组查找题目
前言 - 引言 题目: 一类有序数组旋转查值问题. 例如: 有序数组 [ , , , , , , , , ] 旋转后为 [ , , , , , , , , ] 如何从中找出一个值索引, not fou ...
- Unity教程之-Unity3d中针对Android Apk的签名验证(C#实现)
当Unity开发的游戏以Android Apk的形式发布之后,经常会遇到的一种情况就是别人对我们的游戏进行二次打包,也就是用他们的签名替换掉我们的签名,从而堂而皇之的将胜利果实占为己有.面对这样的情况 ...
- Service(一):认识service、绑定Service
Activity是与用户打交道的,而Service是在后台运行的. 这个程序介绍了下如何启动和停止一个Service,以及在后台打印消息,我添加了一些注释. 在activity_main中将布局改为线 ...