python 学习一段时间了,一直手痒想要动手做些东西,在过完廖雪峰python基础教程之后,其后面利用 python 创建博客的
项目对自己还是非常困难的。所以昨天转向写 python 简单爬虫,在观看了慕课网的爬虫视频之后,依葫芦画瓢地也写了这个
爬取百度百科的程序。踩了一些坑,也填了一些坑,把一些心得体验及时记录下来,以备未来之借鉴。
爬虫程序整体逻辑分析:
1.对程序的不同功能进行代码分离,并统一在一个包之中:pythonBaike
2.程序分为五个部分:
2.1. url 调度器 url_spider
2.2. url 管理器 url_manager
2.3. url 下载器 url_downloader
2.4. url 解析器 url_parser
2.5. url 输出器 url_outputer
3.各部分功能及方法:
3.1. url_spider
main 函数(?) ,导入其他四个部分,并设定种子 url 作为爬虫入口。
初始化,__init__() ,实例化其他四个部分的对象:
def __init__(self): # 对总调程序初始化
self.urls = url_manager.UrlManager()
self.downloader = html_downloader.HtmlDownLoader()
self.parser = html_parser.HtmlParser()
self.outputer = html_outputer.HtmlOutputer()
建立 craw() 方法,依次进行: 添加 add_new_url(new_url) , 判断是否有 new_url: has_new_url()
取出一个 url get_new_url(); 下载 url 内容, download(new_url); 解析网页内容 psrse(url,data)
保存新爬取的 urls add_new_urls()
保存 网页内容 collect_data() ; 输出数据 output_html()
3.2. 对其余部分建立对应类,绑定对应方法。
class UrlManager(object):
def __init__():
def add_new_url():
def add_new_urls():
def has_new_url():
def get_new_url():
class UrlDownload(object):
def download():
class UrlParser(object):
def __init__():
def parse():
class HtmlOutput(object):
def collect_data():
def output_html():
每个类的绑定方法确定,逐一实现。
每个类是否都需要初始化呢。。。
将所爬取的文件写入到html 文件中,需要制定编码格式为 utf-8
对于数据形式 set() , dict {} ,list [] ,tuple() 的操作。
list.append()
list.pop()
list.insert()
dict['key']
dict.get()
dict.pop()
set(),没有重复的key
add(key)
remove(key)
urllib.request 学习。
urllib.request.urlopen(url) , 返回类文件对象,有 read() 方法
BeautifulSoup 学习。