Python3实现简单爬虫及一些编码问题

这篇文章记录利用python3实现一个简单爬虫的过程,爬虫爬取百度百科的相关连接,入口地址是面向对象这个页面:http://baike.baidu.com/view/125370.htm


1. 爬虫的基本知识

爬虫是通过网页之间的url连接不断的读取网上的内容的一个工具,根据这个概念,我们可以理解爬虫所需要的一些基本东西。


(1)url管理器

管理url的地址。首先应该有一个待爬取url的集合,用于管理已经收集到,但还没有爬取的url地址,从爬取的网页中收集到的url地址都应该存放在这个集合中。其次,为了防止网页之间的重复爬取,还应该有个已爬取url的集合,存放已经爬取过的url,防止重复爬取。url管理器应该实现新url的添加,url地址的移动(从待爬取移动到已爬取),从待爬取集合中获得url地址用于爬取等功能。


(2)网页下载器

当从url管理器中获得一个未爬取的url地址时,应该首先将其从网络中下载下来,所以需要一个网页下载器。python3中将python2的urllib和urllib2等模块合并为urllib,其中urllib.request可以用于打开网页,并读取保存网页的内容。


(3)网页解析器

当我们通过下载器得到了网页的内容后,我们应该对一个网页进行解析,获取我们想要的内容,比如图片、url链接等等,这就需要一个网页解析器。python3自带网页解析模块,也可以使用BeautifulSoup模块进行网页的解析,这个模块功能实用而且简单。

网页解析器能够获取网页上的url链接,我们可以将获取到的链接添加进url管理器中用作进一步的爬取,这样就可以不断的爬取。


(4)输出

通过网页解析器获取到的内容通过文件保存的形式输出,供其他需求使用。(本文以html的网页形式进行输出)


2. 代码实现

(1)url管理器:url_manager.py

# coding:utf8

'''
crawler main function, call for other function

Created on 2015-12-31

'''

# 实现一个url管理器的类
class UrlManager(object):
    # url管理器里面有两个url集合,分别保存已经爬取过的url和未爬取的url
    def __init__(self):
        # 未爬取的url
        self.new_urls = set()
        # 已爬取的url
        self.old_urls
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值