Python 开发轻量级爬虫08
Python 开发轻量级爬虫
(imooc总结08--爬虫实例--分析目标)
怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢?
1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据。
本实例确定抓取Python百度百科词条页面以及相关词条页面的标题和简介。
2.分析这个目标,即需要确定抓取这些网站数据的策略。
有三部分需要分析。
1)需要分析这些目标页面的url格式,用来限定我们要抓取页面的范围。
如果这个范围不进行限定的话,我们的爬虫就会抓取互联网上很多不相关的网页,造成资源的浪费。
2)我们需要分析要抓取得数据格式。
在本实例中就要分析,每一个词条页面中标题和简介。这两个数据在标签中的格式。
3)分析页面的编码。
在我们代码的解析器这部分,需要指定网页的编码,才能够正确的解析。在分析完目标格式以后,
我们进行代码的编写。在代码的解析器这部分,就需要使用到前面分析目标这个步骤所得到的抓取策略结果。
3.执行爬虫,进行数据的抓取。
从这些步骤中,我们可以看到分析目标,即制定抓取目标数据的策略是非常重要的一部分。打开我们爬虫的
入口页,也就是python百度百科词条页面。
我们来分析一下抓取这个页面以及相关页面的数据,它的抓取策略是什么?
首先这个页面的url是 http://baike.baidu.com/view/21087.htm
我们来看一下,相关词条页面的url是什么形式?
在这个页面中,任意的词条之上,右键审查元素,可以看到都是/view/xxxx.htm,这是一个不完整的url,
在代码中需要在其前面加上baike.baidu.com,把它拼成一个完整的url,才能进行后续的访问。这就是我们得
到的url格式。
然后,我们来看一下要抓取的标题和简介数据标签格式?
首先我们在python标题上右键审查元素?简介上右键?查看编码格式?通过右键审查元素这种方式,我们就
得到了抓取python以及相关词条网页的url格式、数据格式、网页编码,即得到了抓取这些网站数据的抓取策略。
目标:百度百科python词条相关词条网页 – 标题和简介
入口页: http://baike.baidu.com/view/21087.htm
url格式:
词条页面url:/view/125370.htm
数据格式:
标题:
<dd class="lemmaWgt-lemmaTitle-title">
<h1>Python</h1>
</dd>
简介:
<div class="lemma-summary" label-module="lemmaSummary"></div>
页面编码:utf-8
以上就是我们获得抓取python和相关词条网页的抓取策略,这里需要提醒大家的是,每一个互联网的网站
都会不停升级它的格式。作为一个定向爬虫来说,如果一个网站的格式发生了升级,我们的抓取策略随即升
级。
本实例给出的代码,如果运行出错的话可能是网站的格式发生了升级,我们需要打开目标网站,重新制定新
的策略,修改代码后才能够重新运行。
调度程序
编写实例代码,爬取百度百科python词条页面以及相关1000个页面数据。
创建一个 baike_spider来存放python代码,创建所需要的模块。
创建spider_main.py -- 爬虫的总调度程序
url_manager -- url管理器
html_downloader – 下载器
html_parser – 解析器
html_outputer
– 本代码将所有搜集好的数据写出到一个html页面中,打开一个页面就可以看到所有已经爬取好的数据
spider_main.py
爬虫总调度程序,会以一个入口的url作为参数来爬取所有的相关的页面。
编写main函数,在main函数中,设置下要爬取的入口url http://baike.baidu.com/view/21087.htm
创建一个obj_spider = SpiderMain()
首先我们将入口url添加到url管理器,url管理器中已经有了待爬取的url。
当url管理器已经有了待爬取的url的时候,获取一个待爬取的url。
获取之后,我们启动一个下载器下载这个页面, 结果存储在html_cont中。
下载好了页面。我们调用解析器解析这个页面数据,得到新的url列表和新的数据。
解析器
我们传入两个参数,当前爬取的url和下载好的页面数据。
解析出来的两个数据 url和数据,进行分别处理。
将url添加进url管理器,将数据输出并收集。
这样如果有一个待爬取的url,我们的爬虫就能够爬取所有的url。
最后调用输出收集好的数据。
Python 开发轻量级爬虫08的更多相关文章
- Python 开发轻量级爬虫07
Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...
- Python 开发轻量级爬虫06
Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...
- Python 开发轻量级爬虫05
Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...
- Python 开发轻量级爬虫04
Python 开发轻量级爬虫 (imooc总结04--url管理器) 介绍抓取URL管理器 url管理器用来管理待抓取url集合和已抓取url集合. 这里有一个问题,遇到一个url,我们就抓取它的内容 ...
- Python 开发轻量级爬虫03
Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监 ...
- Python 开发轻量级爬虫02
Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url, ...
- Python 开发轻量级爬虫01
Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访 ...
- Python开发轻量级爬虫
这两天自学了python写爬虫,总结一下: 开发目的:抓取百度百科python词条页面的1000个网页 设计思路: 1,了解简单的爬虫架构: 2,动态的执行流程: 3,各部分的实现: URL管理器:p ...
- Python开发简单爬虫 - 慕课网
课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序 课程目录 第1章 课程介绍 ...
随机推荐
- 从一个简单的ASP.NET 5站点开启.NET跨平台之旅
在经历了阿里云上“黑色1秒”的空欢喜之后,我们“被迫”考虑实现.NET的跨平台,将Web服务器由Windows换成Linux.而这种“被迫”在一个存在已久的愿望下,变得水到渠成.这个愿望就是 —— “ ...
- 85 megacli-查看raid信息
文章本身我不做过多修改了,在这里我就把自己在安装时候碰到的难点跟大家提下.1.何处下载?首先,根据文章中的路径已经下载不到相应的文件了,在此我们就自己到http://www.lsi.com的网站上去搜 ...
- Android BLE 蓝牙编程(三)
上节我们已经可以连接上蓝牙设备了. 本节我们就要获取手环的电池电量和计步啦. 在介绍这个之前我们需要先了解下什么是 服务 什么是 UUID 我们记得上节中我们item监听事件的回调的返回值是Bluet ...
- php特殊用法
1.将字符串转换成可执行的php代码(简单的代码)--eval() <?php $str="echo phpinfo();"; echo eval( $str);
- java-图片下载
图片下载 public static void main(String[] args) { List<String> urlList = new ArrayList<String&g ...
- jQuery 选择同时包含两个class的元素的实现方法
Jquery选择器 多个 class属性参照以下案例 <element class="a b good list card"> 1. 交集选择: $(".a. ...
- 教你一招:Win10系统如何正确卸载edge浏览器?
Edge浏览器作为Win10系统默认浏览器,尽管我们将其他浏览器设置为默认程序,但是有时候还是会自动弹出,非常的不爽,但是在控制面板中却又找不到卸载“Edge”浏览器的选项.下面小编就教大家卸载“Ed ...
- SVN集中式版本控制器的安装、使用与常见问题汇总
SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,集中式版本控制器 官方网站:https://www.visualsvn.com/ 下载右边的服务器端,左边的客 ...
- docker入门记录1
一. 什么是Docker 1.英文意思是集装箱,很形象.直白点就是将程序运行环境打包在一个箱子里,然后箱子扔到哪里,里边的程序都可以运行.这样以来一个显而易见的好处是:和以前的开发环境等相比,你不用每 ...
- BZOJ3631: [JLOI2014]松鼠的新家
传送门 树上的差分优化,很简单的一道题,应该属于NOIP2015TGD2T3的子问题. //BZOJ 3631 //by Cydiater //2016.10.25 #include <iost ...