python爬虫爬取博客_Python爬虫入门教程——爬取自己的博客园博客-程序员宅基地

技术标签: python爬虫爬取博客  

互联网时代里,网络爬虫是一种高效地信息采集利器,可以快速准确地获取网上的各种数据资源。本文使用Python库requests、Beautiful Soup爬取博客园博客的相关信息,利用txt文件转存。

基础知识:

网络爬虫是一种高效地信息采集利器,利用它可以快速、准确地采集互联网上的各种数据资源,几乎已经成为大数据时代IT从业者的必修课。简单点说,网络爬虫就是获取网页并提取和保存信息的自动化过程,分为下列三个步骤:获取网页、提取信息、保存数据。

1.获取网页

使用requests发送GET请求获取网页的源代码。以获取百度为例:

importrequests

response= requests.get('https://www.baidu.com')print(response.text)

2.提取信息

Beautiful Soup是Python的一个HTML或XML解析库,速度快,容错能力强,可以方便、高效地从网页中提取数据。基本用法:

from bs4 importBeautifulSoup

soup= BeautifulSoup(html, 'lxml')print(soup.prettify())print(soup.title.string)

Beautiful Soup方法选择器:

find_all()查询符合条件的所有元素,返回所有匹配元素组成的列表。API如下:

find_all(name,attrs,recursive,text,**kwargs)

find()返回第一个匹配的元素。举个栗子:

from bs4 importBeautifulSoup

soup= BeautifulSoup(html, 'lxml')print(soup.find('div', attrs={'class': 'article-list'}))

3.保存数据

使用Txt文档保存,兼容性好。

使用with as语法。在with控制块结束的时候,文件自动关闭。举个栗子:

with open(file_name, 'a') as file_object:

file_object.write("I love programming.\n")

file_object.write("I love playing basketball.\n")

分析页面:

使用Chrome的开发者工具(快捷键F12),可以查看这个页面的源代码。

HTML代码说白了其实就是一棵树,这棵树的根节点为html标签,head标签和body标签是它的子节点,当然有时候还会有script标签。body标签下面又会有许多的p标签、div标签、span标签、a标签等,共同构造了这棵大树。

可以很容易看到这个页面的博文列表是一个id为mainContent的div。

在class为postTitle的div里面可以找到链接和标题,这就是本文爬取的目标。

编写代码:

获取网页使用requests ,提取信息使用Beautiful Soup,存储使用txt就可以了。

#coding: utf-8

importreimportrequestsfrom bs4 importBeautifulSoupdefget_blog_info():

headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)'

'AppleWebKit/537.36 (KHTML, like Gecko)'

'Ubuntu Chromium/44.0.2403.89'

'Chrome/44.0.2403.89'

'Safari/537.36'}

html=get_page(blog_url)

soup= BeautifulSoup(html, 'lxml')

article_list= soup.find('div', attrs={'id': 'mainContent'})

article_item= article_list.find_all('div', attrs={'class': 'postTitle'})for ai inarticle_item:

title=ai.a.text

link= ai.a['href']print(title)print(link)

write_to_file(title+'\t')

write_to_file(link+'\n')defget_page(url):try:

headers= {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64)'

'AppleWebKit/537.36 (KHTML, like Gecko)'

'Ubuntu Chromium/44.0.2403.89'

'Chrome/44.0.2403.89'

'Safari/537.36'}

response= requests.get(blog_url, headers=headers, timeout=10)returnresponse.textexcept:return ""

defwrite_to_file(content):

with open('article.txt', 'a', encoding='utf-8') as f:

f.write(content)if __name__ == '__main__':

blog_url= "https://www.cnblogs.com/sgh1023/"get_blog_info()

爬取结果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39969006/article/details/110542666

智能推荐

PostgreSQL 性能优化方法 - 1_postgresql 加速 archive_command速度-程序员宅基地

文章浏览阅读7.3k次。摘要: 使用一个非常容易理解的案例,讲解PostgreSQL的优化手段。 本文成文自2012年初,有一些性能指标数据已经过时了,但是优化方法没有过时,请关注优化的方法。 现在的硬件和软件,一台主机达到的性能数据已经可以替代我当时测试的8台主机性能了。使用一个非常容易理解的案例,讲解PostgreSQL的优化手段。本文成文自2012年初,有一些性能指标数据已经过时了,但是优化方法没有过时,_postgresql 加速 archive_command速度

人脸识别算法二:Fisherface(LDA)_lda人脸识别原理-程序员宅基地

文章浏览阅读7.2k次,点赞5次,收藏48次。LDA线性判别分析 也称FLD(Fisher线性判别)是一种有监督的学习方法(supervised learning)。目的:是从高维空间中提取出最优判别力的低维特征,这些特征使同一类别的样本尽可能的靠近,同时使不同类别的样本尽可能的分开,即选择使样本的类间散布矩阵和类内散布矩阵达到最大比值的特征。因此,用FLD得到的特征不但能够较好的表示原始数据,而且更适合分类。 ..._lda人脸识别原理

在python程序中导入sys模块后_python-sys模块、导入自定义包-程序员宅基地

文章浏览阅读1.2k次。import问题:https://zhuanlan.zhihu.com/p/69099185一、sys模块sys模块是python自带模块,包含了与Python解释器和它的环境有关的函数。利用 import 语句输入sys 模块。dir(sys):通过dir()方法查看模块中可用的方1.sys.pathsys.path:包含了Python解释器自动查找所需模块的路径的列表。在Python启动时,s..._导入自定义库 sys.path

Python-单例模式详解与实现_python 单例模式,并自动销毁-程序员宅基地

文章浏览阅读1.2w次,点赞3次,收藏6次。单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。应用:例如,数据库连接,可使用_python 单例模式,并自动销毁

KafkaStreams-Java-API操作-06_build.addsource.addprocessor-程序员宅基地

文章浏览阅读451次。Kafka Streams Kafka Streams。Apache Kafka开源项目的一个组成部分。是一个功能强大,易于使用的库。用于在Kafka上构建高可分布式、拓展性,容错的应用程序。Kafka Streams特点1)功能强大高扩展性,弹性,容错2)轻量级无需专门的集群一个库,而不是框架3)完全集成100%的Kafka 0.10.0版本兼容..._build.addsource.addprocessor

k8s通过ceph-csi接入存储的概要分析_cephcsi-程序员宅基地

文章浏览阅读2.5k次。ceph-csi分析,通过ceph-csi让k8s接入ceph存储,对所涉及的k8s对象与组件进行了简单的介绍,以及k8s对存储进行相关操作的流程分析,存储相关操作包括了存储创建、存储扩容、存储挂载、解除存储挂载以及存储删除操作。..._cephcsi

随便推点

求线段与圆弧的交点_直线和圆弧的交点-程序员宅基地

文章浏览阅读2.9k次,点赞4次,收藏15次。最近面试遇到一个问题,就是已知一条线段的两个端点坐标,和一个圆弧(起始点逆时针旋转到终止点的圆弧)的圆心坐标,半径,起始角和终止角(起始角和终止角是指以x轴正方向为起点,逆时针转动的角度),求线段和圆弧的交点。..._直线和圆弧的交点

【AI视野·今日Robot 机器人论文速览 第十八期】Fri, 2 Jul 2021_stabilizing deep q-learning with convnets and visi-程序员宅基地

文章浏览阅读371次。AI视野·今日CS.Robotics 机器人学论文速览Fri, 2 Jul 2021Totally 26 papers????上期速览更多精彩请移步主页Daily Robotics PapersLearning to See before Learning to Act: Visual Pre-training for Manipulation Authors Lin Yen Chen, Andy Zeng, Shuran Song, Phillip Isola, Tsung Yi _stabilizing deep q-learning with convnets and vision transformers under data

Apache Beam 快速入门(Python 版)_python3.7 支持的 apache-beam 版本-程序员宅基地

文章浏览阅读2.3k次。Apache Beam 是一种大数据处理标准,由谷歌于 2016 年创建。它提供了一套统一的 DSL 用以处理离线和实时数据,并能在目前主流的大数据处理平台上使用,包括 Spark、Flink、以及谷歌自身的商业套件 Dataflow。Beam 的数据模型基于过去的几项研究成果:FlumeJava、Millwheel,适用场景包括 ETL、统计分析、实时计算等。目前,Beam 提供了两种语_python3.7 支持的 apache-beam 版本

vue 实现无限轮播_纯vue实现轮播,超简单-程序员宅基地

文章浏览阅读994次。用vue如何实现轮播,超简单。新手用vue实现轮播,超简单知识点:v-if 指令 --- 显示隐藏transform --- vue 自带过渡动画1 开始:准备 dom 并挂载.banner{width: 640px; height: 300px; background-color: #f0f0f0; margin: 50px auto; position: relative; overflow:..._vue通过v-for实现内容轮播

计算机经典书籍【转】-程序员宅基地

文章浏览阅读353次。【动机】就计算机这个专业来说吧,因为我是非科班出身的学生,要重新开始补相应的知识,目前定下来要学习的基础理论知识有:离散数学,数据结构与算法, 组成原理,汇编,操作系统,网络等等,有的时候觉得这里每一个知识点要学的深入的话都是无底洞,不过我又是那种喜欢追根究底的人,比如学习a知识的时候要 用到b知识,我会停下来学学b知识,然后一直这样下去.....有时候也会觉得很累,觉得没有一个尽头。最近也看..._计算机最严谨的书号称找到错够多就能致富

Android两种实现跳转网页的方式_andriod如何实现页面跳转-程序员宅基地

文章浏览阅读9.9k次。@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //方式一,Webview控件跳转网页 WebV_andriod如何实现页面跳转