专栏:006:实战爬取博客

(起什么优雅的名字点击量会增多?)


系列爬虫专栏

崇尚的学习思维是:输入,输出平衡,且平衡点不断攀升。

曾经有大神告诫说:没事别瞎写文章;所以,很认真的写的是能力范围内的,看客要是看不懂,不是你的问题,问题在我,得持续输入,再输出。

今天的主题是:实战爬取. (涉及python文件操作,requests,BeautifulSoup,结构化数据)


1:框架

序号 内容 解释
01 内容介绍 --
02 分解如何操作 --
03 参考及介绍 --

2:内容介绍

  • 目标
    抓取目标网站的全部博文:
    01: 博文的链接
    02: 博文的标题
    03: 博文的摘要

  • 由来

url = http://xlzd.me/
昨天在学习基于github搭建博客的时候,无意间查看到这个人的博客,里面也有好些python和爬虫知识。xlzd杂谈
进一步发现是个罗粉。
你懂的。

  • 时间花销
    一般写一篇专栏,需要花费80min,今天又是放假时间,所以效率不高,光从零开始写代码就花了60min。水平还是不够。
    原则上,基本的爬虫知识已经快属于我的舒适区。最近持续的专栏写作,一系列的总结,意味着,写出的多,输入的少,甚至写完这个系列,会写不出像样的其他专栏...
    但我的理念是:持续精进。
    所以,会尽快写完这个系列,进行输入数据科学知识。

3:步骤分解

先总结下爬虫的大概步骤是什么:

  1. 获取url : 不管是自己构造的符合要求的url还是抓取的url.
  2. 下载网页源代码:requests 或者 urllib模块
  3. 对网页源代码进行解析:re, BeautifulSoup系列,xpath系列等
  4. 结构化数据,存储:本地,数据等
  • 原始:url
    http://xlzd.me/

查看网页翻页:

002.png

网页源代码:

003.png

得出网页的组成特征:给出两种自己构造url的方法

# 方法1:
    def search_url_one(self):
        self.all_url = ["http://xlzd.me/page/{}/".format(i) for i in range(1, 8)]
        return self.all_url
        pass
# 方法2:
    def search_url_two(self):
        for one in range(1, 8):
            url = "http://xlzd.me/page/" + str(one) + '/'
            self.all_url.append(url)
        return self.all_url

当然也可以自己在网页中匹配,每抓取一页,把下一页的url抓取出来,总共7页,抓最后一页进行判断,说明这是最后一页。

  • 对第一页分析抓取的目标:
    文章的url
    文章的标题
    文章的摘要
    网页源代码显示:
004.png
all_title = Soup.find_all(class_="post-title")
all_abstract = Soup.find_all(class_="post-content")

# 上面已经把所需要的目标都容纳下来了。
# 具体的url 和标题 的匹配规则是:
for one_title in all_title:
    one_title.a.get('href'))  # 获取 一个url
    one_title.get_text()      # 获取 一个title

# 具体的摘要匹配规则是:
for one_abstract in all_abstract:
    one_abstract.get_text()   #获取一个abstract

具体方法参考BeautifulSoup文档

大概的任务已经完成了。
一页中有8篇文章,一共有7页。
循环操作就可以实现抓取任务了。

  • 写入文本操作
    具体要求是每篇文章的url,title,abstract 写入一个文本中。
    刚开始我的想法是把title当做 文本的名称:
    如下显示:
001.png

全部抓取的时候发现有些标题不规则会出错。所以进行了简化操作。
第一篇:1.txt
依次类推到最后一篇。

005.png
# 文本写入总会出现编码问题,注意下。
    def save(self, passage):
        global name
        for one in range(len(passage)):
            with codecs.open("Blog\\" + str(name) + ".txt", 'wb', encoding='utf-8') as f:
                f.write(passage[one]["url"])
                f.write("\n")
                f.write(passage[one]["title"])
                f.write("\n")
                f.write(passage[one]["abstract"])
                f.write("\n")
                name +=1

具体一篇的显示如下:

006.png

结果:7页网页,1页8篇文章,最后一页只有1篇文章。

007.png

全部抓取完成。

获取到的全部文章的url还可以进行分析,比如如何把每篇文章的内容都抓取下来。

代码还可以进行重构。
你懂的。

4:参考及总结

大致流程走下来。爬虫的整体思路应该明朗了。

完整代码:完整代码

专栏地址

关于本人:

国内小硕,半路出家的IT学习者。

兴趣领域:爬虫 , 数据科学

本人正在构建一个共同成长爬虫小型社群。有兴趣私信
答疑及分享。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容