博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Python学习] 简单网络爬虫抓取博客文章及思想介绍
阅读量:5338 次
发布时间:2019-06-15

本文共 3081 字,大约阅读时间需要 10 分钟。

        前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy,可是也分享给大家,就当简单入门吧!同一时候仅仅分享知识,希望大家不要去做破坏网络的知识或侵犯别人的原创型文章.主要包含:

        1.介绍爬取CSDN自己博客文章的简单思想及过程
        2.实现Python源代码爬取新浪韩寒博客的316篇文章

一.爬虫的简单思想

     近期看刘兵的《Web数据挖掘》知道,在研究信息抽取问题时主要採用的是三种方法:

        1.手工方法:通过观察网页及源代码找出模式,再编敲代码抽取目标数据.但该方法无法处理网站数量巨大情形.
        2.包装器归纳:它英文名称叫Wrapper Induction,即有监督学习方法,是半自己主动的.该方法从手工标注的网页或数据记录集中学习一组抽取规则,从而抽取具有类似格式的网页数据.
        3.自己主动抽取:它是无监督方法,给定一张或数张网页,自己主动从中寻找模式或语法实现数据抽取,因为不须要手工标注,故能够处理大量网站和网页的数据抽取工作.
        这里使用的Python网络爬虫就是简单的数据抽取程序,后面我也将陆续研究一些Python+数据挖掘的知识并写这类文章.首先我想获取的是自己的全部CSDN的博客(静态.html文件),详细的思想及实现方式例如以下:
第一步 分析csdn博客的源代码
       
首先须要实现的是通过分析博客源代码获取一篇csdn的文章,在使用IE浏览器按F12或Google Chrome浏览器右键"审查元素"能够分析博客的基本信息.在网页中链接了作者全部的博文.
        显示的源代码格式例如以下:
        当中<diw class="list_item article_item">..</div>表示显示的每一篇博客文章,当中第一篇显演示样例如以下:
        它的详细html源码例如以下:
        所以我们仅仅须要获取每页中博客<div class="article_title">中的链接<a href="/eastmount/article/details/39599061">,并添加就可以.在通过代码:

import urllibcontent = urllib.urlopen("http://blog.csdn.net/eastmount/article/details/39599061").read()open('test.html','w+').write(content)

        可是CSDN会禁止这种行为,server禁止爬取站点内容到别人的网上去.我们的博客文章常常被其它站点爬取,但并没有申明原创出处,还请尊重原创.它显示的错误"403 Forbidden".

        PS:据说模拟正常上网能实现爬取CSDN内容,读者能够自己去研究,作者此处不介绍.參考(已验证):
       
       
第二步 获取自己全部的文章
        这里仅仅讨论思想,如果我们第一篇文章已经获取成功.以下使用Python的find()从上一个获取成功的位置继续查找下一篇文章链接,就可以实现获取第一页的全部文章.它一页显示的是20篇文章,最后一页显示剩下的文章.
        那么怎样获取其它页的文章呢?
        我们能够发现当跳转到不同页时显示的超链接为:

第1页 http://blog.csdn.net/Eastmount/article/list/1第2页 http://blog.csdn.net/Eastmount/article/list/2第3页 http://blog.csdn.net/Eastmount/article/list/3第4页 http://blog.csdn.net/Eastmount/article/list/4

        这思想就很easy了,其过程简单例如以下:

        for(int i=0;i<4;i++)                //获取全部页文章
                for(int j=0;j<20;j++)      //获取一页文章 注意最后一页文章篇数
                        GetContent();       //获取一篇文章 主要是获取超链接
        同一时候学习过通过正則表達式,在获取网页内容图片过程中格外方便.如我前面使用C#和正則表達式获取图片的文章:

二.爬取新浪博客

        上面介绍了爬虫的简单思想,可是因为一些站点server禁止获取站点内容,可是新浪一些博客还能实现.这里參照"51CTO学院 智普教育的python视频"获取新浪韩寒的全部博客.

        地址为:
        採用同上面一样的方式我们能够获取每一个<div class="articleCell SG_j_linedot1">..</div>中包括着一篇文章的超链接,例如以下图所看到的:
        此时通过Python获取一篇文章的代码例如以下:

import urllibcontent = urllib.urlopen("http://blog.sina.com.cn/s/blog_4701280b0102eo83.html").read()open('blog.html','w+').write(content)

        能够显示获取的文章,如今须要获取一篇文章的超链接,即:

        <a title="《论电影的七个元素》——关于我对电影的一些看法以及《后会无期》的一些消息" target="_blank" href="">《论电影的七个元素》——关于我对电…</a>
        
在没有讲述正則表達式之前使用Python人工获取超链接http,从文章开头查找第一个"<a title",然后接着找到"href="和".html"就可以获取"".代码例如以下:

#..#coding:utf-8con = urllib.urlopen("http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html").read()title = con.find(r'

        以下依照前面讲述的思想通过两层循环就可以实现获取全部文章,详细代码例如以下:

#coding:utf-8import urllibimport timepage=1while page<=7:    url=['']*50      #新浪播客每页显示50篇    temp='http://blog.sina.com.cn/s/articlelist_1191258123_0_'+str(page)+'.html'    con =urllib.urlopen(temp).read()    #初始化    i=0    title=con.find(r'

        这样我们就把韩寒的316篇新浪博客文章所有爬取成功并能显示每一篇文章,显演示样例如以下:

        这篇文章主要是简单的介绍了怎样使用Python实现爬取网络数据,后面我还将学习一些智能的数据挖掘知识和Python的运用,实现更高效的爬取及获取客户意图和兴趣方面的知识.想实现智能的爬取图片和小说两个软件.
        该文章仅提供思想,希望大家尊重别人的原创成果,不要任意爬取别人的文章并没有含原创作者信息的转载!最后希望文章对大家有所帮助,初学Python,假设有错误或不足之处,请海涵!
    (By:Eastmount 2014-10-4 中午11点 原创CSDN )
        參考资料:
        1.
51CTO学院 智普教育的python视频
        2.《Web数据挖掘》刘兵著

转载于:https://www.cnblogs.com/zsychanpin/p/6867994.html

你可能感兴趣的文章
本地MongoDB服务开启与连接本地以及远程服务器MongoDB服务
查看>>
跨域解决方案之CORS
查看>>
学习RESTFul架构
查看>>
分析语句执行步骤并对排出耗时比较多的语句
查看>>
原生JS轮播-各种效果的极简实现
查看>>
软件工程总结作业---提问回顾与个人总结
查看>>
计数器方法使用?
查看>>
带你全面了解高级 Java 面试中需要掌握的 JVM 知识点
查看>>
sonar结合jenkins
查看>>
解决VS+QT无法生成moc文件的问题
查看>>
AngularJs练习Demo14自定义服务
查看>>
stat filename
查看>>
关于空想X
查看>>
CF1067C Knights 构造
查看>>
[BZOJ2938] 病毒
查看>>
webstorm修改文件,webpack-dev-server不会自动编译刷新
查看>>
Scikit-learn 库的使用
查看>>
CSS: caption-side 属性
查看>>
python 用数组实现队列
查看>>
认证和授权(Authentication和Authorization)
查看>>