python爬虫基本概述_爬虫脚本是干什么的-程序员宅基地

技术标签: 爬虫  python  

python爬虫基本概述

一、爬虫是什么

       网络爬虫(Crawler)又称网络蜘蛛,或者网络机器人(Robots). 它是一种按照一定的规则, 自动地抓取万维网信息的程序或者脚本。换句话来说,它可以根据网页的链接地址自动获取网页 内容。如果把互联网比做一个大蜘蛛网,它里面有许许多多的网页,网络蜘蛛可以获取所有网页 的内容。

      爬虫是一个模拟人类请求网站行为, 并批量下载网站资源的一种程序或自动化脚本。

二、爬虫可以做什么

      1. 搜索引擎

      2. 采集金融数据

      3. 采集商品数据

      4. 采集竞争对手的客户数据

      5. 采集行业相关数据,进行数据分析

      6. 刷流量

三、爬虫的分类 

      1、通用网络爬虫 又称为全网爬虫,其爬取对象由一批 URL 扩充至整个 Web,主要由搜索引擎或大型 Web 服 务商使用。

      2、聚焦网络爬虫 又称为主题网络爬虫,其特点是只选择性的地爬取与预设的主题相关的页面,相比通用网 络爬虫,聚焦网络爬虫仅需要爬取与主题相关的页面,极大地节省硬件及网络资源,能更 快的更新保存页面,更好的满足特定人群对特定领域的需求。

      3、增量网络爬虫 只对已下载的网页采取增量式更新,或只爬取新产生的及已经发生变化的网页,这种机制 能够在某种程度上保证所爬取的网页尽可能的新。

      4、深度网络爬虫 Web 页面按照存在的方式可以分为表层页面和深层页面两类。表层页面是只传统搜索引擎 可以索引到的页面,以超链接可以达到的静态页面为主。深层页面是指大部分内容无法通 过静态链接获取,隐藏在搜索表单之后的,需要用户提交关键词后才能获得的 Web 页面, 如一些登陆后可见的网页。

四、爬虫的基本流程

1、浏览网页的流程

2 、爬虫的基本流程

      1. 请求网页 通过 HTTP 库向目标站点发起请求,即发送一个 Request,请求可以包含额外的 headers 等 信息,等待服务器响应!

      2. 获得相应内容 如果服务器能正常响应,会得到一个 Response,Response 的内容便是所要获取的页面内容, 类型可能有 HTML,Json 字符串,二进制数据(如图片视频)等类型。

      3. 解析内容 得到的内容可能是 HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以 直接转为 Json 对象解析,可能是二进制数据,可以做保存或者进一步的处理。

      4. 存储解析的数据 保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件  

3 、爬虫的测试案例

 爬取搜狗首页的页面数据

# 导包
import requests
# step_1 : 指定url
url ='https://www.sogou.com/'
# step_2 : 发起请求:
# 使用get 方法发起get 请求, 该方法会返回一个响应对象。参数url 表示请求对应的url
response = requests.get ( url = url )
# step_3 : 获取响应数据:
# 通过调用响应对象的text 属性, 返回响应对象中存储的字符串形式的响应数据( 页面源码数据)
page_text = response . text
# step_4 : 持久化存储
with open ('sogou.html','w',encoding ='utf -8') as fp:
    fp.write (page_text)
print ('爬取数据完毕! ! !')

得到sogou.html

想了解更多爬虫可移步:Python网络爬虫教程详解.pdf

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

智能推荐

python中的时间处理模块(二):datetime模块之timedelta类详解_python datetime.timedelta-程序员宅基地

文章浏览阅读5.7w次,点赞49次,收藏276次。1、datetime模块  datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用的有date、time、datetime、timedelta、tzinfo。但是为了更灵活的处理时间,最好是将time模块和datetime模块中的精髓学习到。① date类:主要用于处理年、月、日;② time类:主要用于处理时、分、秒;③ datetime类:dat..._python datetime.timedelta

一文详解机器人标准D-H参数与改进型D-H参数_标准dh参数-程序员宅基地

该文章详解了机器人的标准D-H参数和改进型D-H参数,介绍了关节角、偏置距离、连杆长度和连杆扭角的概念,以及坐标系的建立和改进DH参数的具体数值。

我是如何十天学会C++_十天快速学习c++-程序员宅基地

文章浏览阅读588次。注意!注意!注意!是学会,只是初步掌握!作为一名非科班出身的程序员,所有的计算机语言对我来说是非常陌生和困难的!闲话少叙,十天时间里我把《21天学通C++》看了两遍,白天晚上加班加点的看书敲代码练习,看书的效果肯定是不如自己去敲去练习的,所以给后来者忠言:一定要敲代码敲代码敲代码!重要的事情说三遍!..._十天快速学习c++

MCS-51单片机的串行口及串行通信技术_方式0字符(帧)的格式图-程序员宅基地

文章浏览阅读8k次,点赞4次,收藏19次。数据通信的基本概念串行通信有单工通信、半双工通信和全双工通信3种方式。单工通信:数据只能单方向地从一端向另一端传送。例如,目前的有线电视节目,只能单方向传送。半双工通信:数据可以双向传送,但任一时刻只能向一个方向传送。也就是说,半双工通信可以分时双向传送数据。例如,目前的某些对讲机,任一时刻只能一方讲,另一方听。全双工通信:数据可同时向两个方向传送。全双工通信效率最高,适用于计算机之间的通信。此外,通信双方要正确地进行数据传输,需要解决何时开始传输,何时结束传输,以及数据传输速率等问题,_方式0字符(帧)的格式图

无人驾驶技术——Radar雷达_无人驾驶radar-程序员宅基地

文章浏览阅读3.5k次。文章目录Radar传感器雷达工作原理雷达的结构Radar vs Lidar不同级别自动驾驶中radar的使用数量L0 无自动化L1 驾驶支援L2 部分自动化L3 有条件自动化L4 高度自动化L5 完全自动化上一篇文章大概介绍了无人驾驶领域里的传感器,以及相应的使用场景,这一篇主要是针对Radar做了更详细的学习,现在整理笔记如下。图片均来源于网络,如有侵权,请联系删除。Radar传感器雷达..._无人驾驶radar

1066 图像过滤,java后端工程师面试题-程序员宅基地

文章浏览阅读510次,点赞19次,收藏14次。分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

随便推点

Docker安装kafka可视化管理工具 - Kafka Eagle_kafka-eagle docker-程序员宅基地

文章浏览阅读2k次。Docker安装kafka可视化管理工具 - Kafka Eagle_kafka-eagle docker

(转)流程和高速公路 [ 光影人像 东海陈光剑 的博客 ]-程序员宅基地

文章浏览阅读236次。流程和高速公路 一个流程就是一条高速公路 流程图就是高速公路的线路图 每条高速公路都有名字,流程也不例外 高速公路有入口和出口,流程也有起点和终点 高速公路有路标,流程也有节点 高速公路并不一定是条直线,流程也一样并非都是串行,也可并行和选择性路线 为了提高效率,流..._流程vs高速公路

解决PyCharm鼠标右键不显示Run Unittests 解决方法_unittest执行代码不显示run"unittest in-程序员宅基地

文章浏览阅读5.6k次。在pycharm上运行python代码的时候,代码没有错误,但是执行会和我们预想的不一样。执行代码的时候会出现“Run 'Unittests for 文件名称”第一步:有效的解决的办法Run——Edit Configurations第二步:点击运行的文件,点击上面的‘-’第三步:点击选择上面的python,点进“+”,然后选择python第四步:点击需要选择的pyt..._unittest执行代码不显示run"unittest in

SGX-用于独立执行的创新指令集和软件模型(翻译)-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏8次。用于独立执行的创新指令集和软件模型本文译自“Innovative Instructions and Software Model for Isolated Execution”,原文地址:原文地址摘要多年来PC社区一直努力提供开放平台下的安全解决方案,当前英特尔开发了创新技术,使软件开发人员能够在开放平台上开发和部署安全的应用程序。该技术使得应用在原生操作系统环境下执行,并能够同时保持其机密...

算法_python分析算法-程序员宅基地

文章浏览阅读9.2w次,点赞6次,收藏28次。1.算法定义 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。_python分析算法

阿里资深架构师整理出来的一份Java核心知识点分享给大家.pdf-程序员宅基地

文章浏览阅读7.1k次。一份整理的蛮不错的Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。获取方式:关注公众号:JavaAC,获取(粉丝福利)image.pngimage.pngimage.png...