[编程开发] 怎样利用 python 学习爬虫?

[复制链接]
ss20052008 发表于 2023-10-4 19:21:09|来自:北京 | 显示全部楼层 |阅读模式
怎样利用 python 学习爬虫?
全部回复5 显示全部楼层
★小柯★ 发表于 2023-10-4 19:21:31|来自:北京 | 显示全部楼层
爬虫(spider,又网络爬虫),是指向网站/网络发起请求,获取资源后分析并提取有用数据的程序。
从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。
爬虫基本流程
用户获取网络数据的方式:
方式1:浏览器提交请求—>下载网页代码—>解析成页面
方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中
爬虫要做的就是方式2。
入门python爬虫,10分钟就够了,这可能是我见过最简单的基础教学
1发起请求
使用http库向目标站点发起请求,即发送一个Request
Request包含:请求头、请求体等
Request模块缺陷:不能执行JS 和CSS 代码
2获取响应内容
如果服务器能正常响应,则会得到一个Response
Response包含:html,json,图片,视频等
3解析内容
解析html数据:正则表达式(RE模块)、xpath(主要使用)、beautiful soup、css
解析json数据:json模块
解析二进制数据:以wb的方式写入文件
4保存数据
数据库(MySQL,Mongdb、Redis)或 文件的形式。
————————————————
Python快乐编程——网络爬虫是计算机专业学生选修的一门重要专业扩展课。
本课程中内容覆盖全面、讲解详细,其中包括Python网络爬虫入门、爬虫基础知识、urllib与requests、网络爬虫实例、数据处理、数据库存储、抓取动态网页内容、浏览器伪装与定向爬取、初探Scrapy爬虫框架、深入Scrapy爬虫框架、Scrapy实战项目、分布式爬虫等内容。了解爬虫技术发展应用的领域与前景,激发学生的学习兴趣,领会Python在网络爬虫、数据挖掘领域的精髓。
学时分配
章目授课上机合计
第1章 Python网络爬虫入门1学时0学时1学时
第2章 爬虫基础知识2学时2学时4学时
第3章 urllib与requests2学时0学时2学时
第4章 网络爬虫实例2学时2学时4学时
第5章 数据处理2学时2学时4学时
第6章 数据库存储2学时2学时4学时
第7章 抓取动态网页内容2学时2学时4学时
第8章 浏览器伪装与定向爬虫2学时2学时4学时
第9章 初探Scrapy爬虫框架2学时2学时4学时
第10章 深入Scrapy爬虫框架2学时2学时4学时
第11章 Scrapy实战项目2学时2学时4学时
第12章 分布式爬虫2学时2学时4学时
合计23学时20学时43学时
课程的主要内容及基本要求
第1章 Python网络爬虫入门(1学时)
[知 识 点]
Ø 所需技能与Python版本
Ø 初识网络爬虫
Ø 搜索引擎核心
Ø 快速爬取网页示例
[重 点]
Ø 初识网络爬虫
Ø 搜索引擎核心
Ø 快速爬取网页示例
[难 点]
Ø 初识网络爬虫
Ø 搜索引擎核心
Ø 快速爬取网页示例
[基本要求]
Ø 了解网络爬虫及其应用
Ø 了解网络爬虫的结构
[实践与练习]
完成相关习题。
第2章 爬虫基础知识(4学时)
[知 识 点]
Ø Cookie的使用
Ø 正则表达式
Ø 标记语言
Ø XPath
Ø JSON
Ø BeautifulSoup
[重 点]
Ø 正则表达式
Ø 标记语言
Ø XPath
Ø JSON
[难 点]
Ø 正则表达式
Ø 标记语言
Ø XPath
Ø JSON
[基本要求]
Ø 掌握Cookiejar的使用
Ø 掌握正则表达式的使用
Ø 掌握XPath的使用
Ø 掌握JSON数据的语法
Ø 掌握BeautifulSoup的使用
[实践与练习]
完成相关习题。
第3章 urlllib与requests(2学时)
[知 识 点]
Ø urllib库
Ø 设置HTTP请求方法
Ø 异常处理
Ø requests库
[重 点]
Ø urllib库
Ø 设置HTTP请求方法
Ø 异常处理
Ø requests库
[难 点]
Ø urllib库
Ø 设置HTTP请求方法
Ø 异常处理
Ø requests库
[基本要求]
Ø 掌握urllib库的使用
Ø 掌握URLError异常处理
Ø 掌握Requests库的使用
[实践与练习]
完成相关习题。
第4章 网络爬虫实例(4学时)
[知 识 点]
Ø 图片爬虫实例
Ø 链接爬虫实例
Ø 文字爬虫实例
Ø 微信文章爬虫
Ø 多线程爬虫及实例
[重 点]
Ø 图片爬虫实例
Ø 链接爬虫实例
Ø 文字爬虫实例
Ø 微信文章爬虫
Ø 多线程爬虫及实例
[难 点]
Ø 图片爬虫实例
Ø 链接爬虫实例
Ø 文字爬虫实例
Ø 微信文章爬虫
Ø 多线程爬虫及实例
[基本要求]
Ø 掌握图片爬虫
Ø 掌握链接爬虫
Ø 掌握文字爬虫
Ø 掌握多线程爬虫
[实践与练习]
完成相关习题。
第5章 数据处理(4学时)
[知 识 点]
Ø 存储HTML正文内容
Ø 存储媒体文件
Ø Email提醒
Ø Pymysql模块
[重 点]
Ø 存储HTML正文内容
Ø 存储媒体文件
Ø Email提醒
Ø Pymysql模块
[难 点]
Ø 存储媒体文件
Ø Email提醒
Ø Pymysql模块
[基本要求]
Ø 掌握将HTML正文内容存储为JSON格式
Ø 掌握将HTML正文内容存储为CSV格式
Ø 掌握发送邮件模块的使用
Ø 掌握使用pymysql模块将数据存储到MySQL数据库
[实践与练习]
完成相关习题。
第6章 数据库存储(4学时)
[知 识 点]
Ø SQLite
Ø MongoDB
Ø Redis
[重 点]
Ø SQLite
Ø MongoDB
Ø Redis
[难 点]
Ø SQLite
Ø MongoDB
Ø Redis
[基本要求]
Ø 掌握SQLite数据库
Ø 掌握MongoDB数据库
[实践与练习]
完成相关习题。
第7章 抓取动态网页内容(4学时)
[知 识 点]
Ø JavaScript简介
Ø 爬取动态网页的工具
Ø 爬取动态网页实例
[重 点]
Ø 爬取动态网页的工具
Ø 爬取动态网页实例
[难 点]
Ø 爬取动态网页的工具
Ø 爬取动态网页实例
[基本要求]
Ø 了解JavaScript
Ø 了解动态HTML
Ø 掌握Selenium库
[实践与练习]
完成相关习题。
第8章 浏览器伪装与定向爬取(4学时)
[知 识 点]
Ø 浏览器伪装介绍
Ø 定向爬虫
[重 点]
Ø 浏览器伪装介绍
Ø 定向爬虫
[难 点]
Ø 定向爬虫
[基本要求]
Ø 掌握浏览器伪装技术
Ø 了解反爬虫机制
Ø 掌握定向爬虫
[实践与练习]
完成相关习题。
第9章 初探Scrapy爬虫框架(4学时)
[知 识点]
Ø 了解爬虫框架
Ø Scrapy介绍
Ø 常用命令
Ø 编写Spider程序
Ø Spider反爬虫机制
[重 点]
Ø 常用命令
Ø 编写Spider程序
Ø Spider反爬虫机制
[难 点]
Ø 常用命令
Ø 编写Spider程序
Ø Spider反爬虫机制
[基本要求]
Ø 掌握爬虫Scrapy框架结构
Ø 掌握爬虫Scrapy框架项目管理
Ø 掌握爬虫Scrapy框架命令工具
[实践与练习]
完成相关习题。
第10章 深入Scrapy爬虫框架(4学时)
[知 识 点]
Ø Scrapy核心架构
Ø Scrapy组件详解
Ø Scrapy数据处理
Ø Scrapy自动化爬取
Ø CrawSpider
[重 点]
Ø Scrapy组件详解
Ø Scrapy数据处理
Ø Scrapy自动化爬取
Ø CrawSpider
[难 点]
Ø Scrapy数据处理
Ø Scrapy自动化爬取
Ø CrawSpider
[基本要求]
Ø 了解Scrapy核心架构
Ø 掌握Scrapy的中文存储
Ø 掌握Scrapy数据处理流程
[实践与练习]
完成相关习题。
第11章 Scrapy实战项目(4学时)
[知 识 点]
Ø 文章类项目
Ø 图片类项目
Ø 登录类项目
[重 点]
Ø 文章类项目
Ø 图片类项目
Ø 登录类项目
[难 点]
Ø 文章类项目
Ø 图片类项目
Ø 登录类项目
[基本要求]
Ø 掌握爬取文章网站的爬虫开发
Ø 掌握爬虫项目开发的流程实现
[实践与练习]
完成相关习题。
第12章 分布式爬虫(4学时)
[知 识 点]
Ø 简单分布式爬虫
Ø Scrapy与分布式爬虫
Ø Scrapy分布式爬虫实战
Ø 去重优化
[重 点]
Ø Scrapy与分布式爬虫
Ø Scrapy分布式爬虫实战
Ø 去重优化
[难 点]
Ø Scrapy与分布式爬虫
Ø Scrapy分布式爬虫实战
Ø 去重优化
[基本要求]
Ø 掌握爬取文章网站的爬虫开发
Ø 掌握爬虫项目开发的流程实现
[实践与练习]
完成相关习题。

以上内容来自千锋教育高教产品研发部编撰清华大学出版社的《Python快乐编程——网络爬虫》。


往期内容回顾

千锋教育:千锋教育Python网络爬虫—第1章 Python网络爬虫入门—所需技能与Python版本、初识网络爬虫、搜索引擎核心、快速爬取网页示例
千锋教育:千锋教育Python网络爬虫—第2章 爬虫基础知识—Cookie的使用、正则表达式、标记语言、XPath、JSON、BeautifulSoup
千锋教育:千锋教育Python网络爬虫—第3章 urllib与requests—urllib库、设置HTTP请求方法、异常处理、requests库

视频教程列表
千锋Python数据分析入门教程—Python爬虫教程—课程宣导片
千锋Python数据分析视频教程—Python爬虫教程—01.课程介绍
千锋Python数据分析视频教程—Python爬虫教程—02.爬虫到底是什么
千锋Python数据分析视频教程—Python爬虫教程—03.爬虫的应用场景
千锋Python数据分析视频教程—Python爬虫教程—04.爬虫的分类
千锋Python数据分析视频教程—Python爬虫教程—05.爬虫合法吗
千锋Python数据分析视频教程—Python爬虫教程—06.爬虫如何搞钱
千锋Python数据分析视频教程—Python爬虫教程—07.开始爬虫的准备工作
千锋Python数据分析视频教程—Python爬虫教程—08.爬虫的核心流程
千锋Python数据分析视频教程—Python爬虫教程—09数据获取前的工具介绍
千锋Python数据分析视频教程—爬虫—10.数据获取之Selenium环境准备
千锋Python数据分析教程—爬虫—11数据获取之Selenium常用API视频
千锋Python数据分析教程—爬虫—12.Selenium提取Cookie视频
千锋Python数据分析视频教程—爬虫教程—13.数据提取之跳过账号密码视频
千锋Python数据分析—爬虫—14.数据获取之双R与Chrome检查工具使用
千锋Python数据分析—爬虫—15数据获取Request获取动态和静态数据视频
千锋Python数据分析视频教程—Python爬虫教程—16.数据提取
千锋Python数据分析视频教程—Python爬虫教程—17.数据存储视频
千锋Python数据分析教程—Python爬虫教程—18.VIP音乐免费下载项目

同学们学完本 初级爬虫 课程后,可以掌握爬虫的价值体系以及入门级爬虫的编写以及应用,本课程需要有Python编程基础,学完本课程我们就可以开心的爬啊爬了!
标签号 发表于 2023-10-4 19:21:38|来自:北京 | 显示全部楼层
最近经常有小伙伴咨询,爬虫到底该怎么学,有什么爬虫学习路线可以参考下,萝卜作为非专业爬虫爱好者,今天咱们就来分享下,对于我们平时的基础爬虫或者小规模爬虫,应该掌握哪些技能、需要如何学起!
学习路线大纲



Python 基础

由于本篇主要介绍 Python 爬虫学习路线,所以对于 Python 基础知识,仅仅提取了最为基础的部分,应付基础爬虫完全够用了,当然,对于底层基础,肯定是掌握的越多、越牢固越好~

  • 环境搭建

    • Python安装
    • 开发工具 - PyCharm,VS Code

  • 变量

    • 定义变量
    • 命名规则
    • 基本数据类型



  • 基本数据结构

    • 字符串
    • 列表
    • 字典
    • 集合
    • 元组

  • 流程控制

    • 条件
    • 循环



  • 函数

    • 调用函数
    • 定义函数
    • 函数参数
    • lambda 函数

  • 面向对象编程

    • 类和对象
    • 访问限制
    • 装饰器

数据采集与解析


  • HTTP 基本原理

    • URI 和 URL 统一资源定位符
    • HTTP&HTTPS 请求与响应
    • HTML 组成原理

  • WEB 基本原理

    • JavaScript&HTML&CSS
    • 节点树与节点
    • Web 加载原理
    • 静动态 Web 页面



  • Socket 库

    • 基于 socket 协议的爬虫

  • Requests 库

    • requests 库的使用
    • cookie 与 session
    • 模拟登录
    • 请求头模拟
    • IP 代理



  • 正则表达式

    • re 模块的使用
    • 基本字符串、数字等匹配规则
    • 贪婪与非贪婪匹配

  • Xpath

    • 执行原理
    • 节点操作
    • 元素操作

多种采集方式


  • 同步采集

    • requests

  • 异步采集

    • aiohttp
    • aiofiles



  • Selenium

    • 环境搭建 - webdriver
    • 元素选择 - (id,css,class,xpath)
    • 模拟登录
    • 隐藏 selenium 特征

  • AJAX

    • Ajax 原理
    • Ajax 请求与响应解析



  • Pyppeteer

    • 环境安装
    • 模拟点击
    • 执行 JS 代码

存储知识


  • 本地文件

    • os 库
    • open 文件
    • 读写 Excel
    • 读写 CSV

  • MySQL

    • 表结构设计
    • 同步/异步写入 MySQL



  • Redis

    • 读写操作
    • 基本数据类型与选择

  • MongoDB

    • 单一写入
    • 批量写入



  • 与 Pandas 结合

    • 存储成 Pandas 数据结构
    • Pandas 基本操作

中间人代理


  • Charles

    • 安装与配置
    • 数据拦截
    • 安卓模拟器

  • Mitmproxy

    • 脚本编写
    • 数据截取
    • 代理响应



  • HttpCanary

    • 基本使用

爬虫框架


  • Scrapy

    • 环境搭建
    • 组件拆解
    • 通用爬虫
    • 分布式爬虫 - (scrapy-redis 使用,scrapy-redis 调度器)

  • Crawley
  • Selenium

    • 分布式部署



  • PySpider
反爬虫知识


  • 信息校验型

    • 模拟登录
    • Cookie 机制
    • 用户代理
    • 签名验证机制
    • header 机制

  • 动态渲染型

    • 页面异步加载



  • 文本混淆型

    • 图文混淆 - 关键信息以图片形式给出
    • 字体反爬 - (反爬原理,编码破解)

  • 特征识别型

    • 访问频率限制 - (IP 代理池,搭建个人 IP 代理池)
    • Selenium 特征检测 - 隐藏 Selenium 特征



  • 验证码

    • 验证码原理
    • 图文验证码
    • 点选验证码
    • 滑动验证码
    • 其他变态验证码

  • JS 混淆

    • JS 逆向

多终端爬虫


  • WEB 采集
  • APP 采集
  • 小程序采集
  • 数据去重
  • 断点采集
  • 增量采集
以上就是整理的基础爬虫所需的学习路线,当然鉴于个人水平有限,难免有不足之处,还望不吝指教!
相关法律法规


  • 遵守 Robots
  • 控制访问速率
  • 敏感信息不碰触
  • 国家安全大于天
  • 获取的数据不进行非法盈利
  • 其他违反法律法规的动作
基本上做到以上几点,我们的爬虫就是安全的,不要过度妖魔化爬虫,当然网络更不是法外之地,要做一个合格的遵纪守法好公民!
尾声

以上就是萝卜断断续续写了几天,结合个人经验,同时也参考了网上大量的视频、文章总结而成的 Python 爬虫学习路线,确实非常的不容易,如果大家觉得满意请务必点个赞
jorny004 发表于 2023-10-4 19:21:59|来自:北京 | 显示全部楼层
首先需要了解Python的基本语法,能够编写简单代码。然后需要学习Python的第三方库,例如 requests、asyncio、lxml、httpx、execjs、PIL、tls_client、scrapy、selenium、appium、wxauto 等等,关于爬虫方向的学习我可以给到以下推荐:
你在网上看到的,95%以上的都是爬虫基础,特别是各种营销号,有很多视频,没有更“高级”的东西,包括知乎上你看到的回答,95%以上都是回答一些基础(可能回答的人自己都没进阶搞过爬虫,只是道听途说),基础你随便找资料学就行了,B站视频也很多,大同小异。
进阶主要是逆向,你会发现基本上没有教程,也很少有人讲这方面的东西,爬虫入门简单,深入很难,我推荐你看以下书籍(我认为是必看的):

  • 爬虫工具推荐:spidertools
  • 爬虫代理推荐:快代理(国内HTTP代理)、免费代理bright data(海外HTTP代理)
  • 小白未入门阶段 :《Python 编程从入门到实践》第二版,作者埃里克·马瑟斯(Eric Matthes)
  • 爬虫入门阶段:《Python3 网络爬虫开发实战》第二版,作者崔庆才
  • 反爬套路总结:《Python3 反爬虫原理与绕过实战》,作者韦世东
  • 数据产品+数据产品思维:《爬虫实战:从数据到产品》,作者贺思聪
  • 爬虫逆向进阶:《反爬虫AST原理与还原混淆实战》,作者李岳阳,卓斌;《安卓Frida逆向与抓包实战》作者陈佳林,《爬虫逆向进阶实战》作者李玺

视频方面,我只推荐进阶,也就是逆向相关的视频:
免费:

  • JS 逆向:《K 哥爬虫》 K 哥的小助理带你由易到难学习逆向
  • JS 逆向:《志远2021全新js逆向教程,学完这套就够了!(全套开源)》
  • APP 逆向:《小肩膀 app逆向百集(105集)》

收费:

  • 夜幕出品 JS 逆向:《JavaScript 逆向系列课》《JavaScript 逆向高阶课》
  • 猿人学:《爬虫高阶课程》
  • 志远和小肩膀 2022 最新的 JS 逆向和 APP 逆向课程,自己在 B 站找购买方式

推荐多逛一下各大论坛:

  • 看雪安全论坛
  • 精易逆向安全
  • 夜幕爬虫论坛
  • 穿甲兵技术社区

PS:很多搞易语言的对于逆向很拿手,可以逛逛易语言的一些论坛,重要的是思路,实现的语言无所谓,也可以关注 K 哥公众号,我会分享一些 JS 逆向知识,比较适合新手。
爬虫工程师的尽头是逆向安全工程师!
sunj 发表于 2023-10-4 19:22:52|来自:北京 | 显示全部楼层
一文搞懂Python—>爬虫需要学什么,附送课程、笔记。
关于Python爬虫,我们需要学:


  • 1. Python基础语法学习(基础知识)
    首先,你需要熟悉Python的基本语法,包括变量、数据类型、条件语句、循环、函数等。
  • 2. 对HTML页面的内容抓取(数据抓取)
    如HTTP协议、URL、请求方法(GET、POST等)和响应状态码(如200,404等)。
  • 3. 对HTML页面的数据提取(数据提取)
    爬虫通常需要从HTML中提取信息,因此你需要了解HTML标签、属性和CSS选择器。
  • 4. Scrapy框架以及scrapy-redis分布式策略(第三方框架)
    requests:一个用于发送HTTP请求的库,它可以帮助你获取网页的HTML内容
    BeautifulSoup:一个用于解析HTML和XML的库,它可以帮助你在HTML文档中定位和提取信息。
    lxml:一个解析HTML和XML的高性能库,可以作为BeautifulSoup的替代品。
    Scrapy:一个强大的爬虫框架,用于构建和管理复杂的爬虫项目
  • 6. 爬虫(Spider)、反爬虫(Anti-Spider)、反反爬虫(Anti-Anti-Spider)之间的斗争....
    熟悉常见的反爬虫策略,如User-Agent伪装、IP代理、使用Selenium处理JavaScript等。
  • 7.学习数据存储
    学习如何将爬取的数据存储到文件(如CSV、JSON)或数据库(如MySQL、MongoDB)中。
可选择的IDE和编译器

工欲善其事,必先利其器:

  • IDE:PyCharm、Spyder、Visual Studio等
  • 编辑器:Vim、Sublime Text、Atom等
由于爬虫相关的内容很多,要学的知识点也琐碎,所以下面仅仅带大家了解Python爬虫,具体学习需要看完整的课程:
Python 入门教程完整版(全 547 集) - 1. ubuntu 基本安装Python 基础学习课程,从搭建环境。判断语句,再到基础的数据类型,之后对函数进行学习掌握,熟悉文件操作,初步构建面向对象的编程思想,最后以飞机大战带领同学进入 Python 的编程殿堂。
Python 进阶之 MySQL 入门教程 - 1. Mysql 入门课程介绍课程内容: 1.掌握数据库的分类;2.熟悉 SQL 介绍;3.熟悉 MySQL 介绍;4.掌握数据库基本操作;5.掌握数据的增删改查 CRUD;6.掌握 MySQL 脚本数据备份;7.掌握 Python 操作数据库 CRUD。
Python 深入浅出进阶课程 - 1. 今日目标课程亮点: 1,对于已经学习过 Python 基础学科课程,或是想深入 Python 编程的同学十分适合。 2,生动形象,浅显易懂,清晰明了。 3,针对 Python 编程进一步所需要的知识点详细讲解,构建 Python 语言的完成的编程能力。
Python 爬虫入门:180 分钟轻松获取疫情数据 - 1. 爬虫概述通用搜索引擎(Search Engine)工作原理

通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。
第一步:抓取网页

搜索引擎网络爬虫的基本工作流程如下:

  • 首先选取一部分的种子URL,将这些URL放入待抓取URL队列;
  • 取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。
  • 分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环....



搜索引擎如何获取一个新网站的URL:


  • 1. 新网站向搜索引擎主动提交网址:(如百度http://zhanzhang.baidu.com/linksubmit/url)
  • 2. 在其他网站上设置新网站外链(尽可能处于搜索引擎爬虫爬取范围)
  • 3. 搜索引擎和DNS解析服务商(如DNSPod等)合作,新网站域名将被迅速抓取。
但是搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从一些命令或文件的内容,如标注为nofollow的链接,或者是Robots协议。
Robots协议(也叫爬虫协议、机器人协议等),全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,例如:
淘宝网:https://www.taobao.com/robots.txt
腾讯网: http://www.qq.com/robots.txt
第二步:数据存储

搜索引擎通过爬虫爬取到的网页,将数据存入原始页面数据库。其中的页面数据与用户浏览器得到的HTML是完全一样的。
搜索引擎蜘蛛在抓取页面时,也做一定的重复内容检测,一旦遇到访问权重很低的网站上有大量抄袭、采集或者复制的内容,很可能就不再爬行。
第三步:预处理

搜索引擎将爬虫抓取回来的页面,进行各种步骤的预处理。

  • 提取文字
  • 中文分词
  • 消除噪音(比如版权声明文字、导航条、广告等……)
  • 索引处理
  • 链接关系计算
  • 特殊文件处理
  • ....
除了HTML文件外,搜索引擎通常还能抓取和索引以文字为基础的多种文件类型,如 PDF、Word、WPS、XLS、PPT、TXT 文件等。我们在搜索结果中也经常会看到这些文件类型。
但搜索引擎还不能处理图片、视频、Flash 这类非文字内容,也不能执行脚本和程序。
第四步:提供检索服务,网站排名

搜索引擎在对信息进行组织和处理后,为用户提供关键字检索服务,将用户检索相关的信息展示给用户。
同时会根据页面的PageRank值(链接的访问量排名)来进行网站排名,这样Rank值高的网站在搜索结果中会排名较前,当然也可以直接使用 Money 购买搜索引擎网站排名,简单粗暴。


课外阅读:Google搜索引擎的工作原理
但是,这些通用性搜索引擎也存在着一定的局限性:


  • 通用搜索引擎所返回的结果都是网页,而大多情况下,网页里90%的内容对用户来说都是无用的。
  • 不同领域、不同背景的用户往往具有不同的检索目的和需求,搜索引擎无法提供针对具体某个用户的搜索结果。
  • 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎对这些文件无能为力,不能很好地发现和获取。
  • 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询,无法准确理解用户的具体需求。
针对这些情况,聚焦爬虫技术得以广泛使用。

聚焦爬虫

聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。
深入学习网络爬虫,就是聚焦爬虫。
pincai 发表于 2023-10-4 19:23:50|来自:北京 | 显示全部楼层
使用Python做爬虫其实很简单,这里使用一个小案例来详细介绍Python爬虫的用法,借助Python工具爬取王者荣耀英雄人物头像图片,Python爬虫爬取网页图片可以分为四步:明确目的、发送请求、数据解析、保存数据,具体步骤如下,下面一起学习。
示例工具:anconda3.7
本文讲解内容:Python爬取图片
适用范围:网页解析、图片爬取
01. 明确目的

打开王者荣耀英雄介绍主页,该主页包含很多种英雄的头像图片,主页网址链接如下。
https://pvp.qq.com/web201605/herolist.shtml

02. 发送请求

使用requests库发送请求,返回状态码显示为200,服务器连接正常。
  1. import requests
  2. u='https://pvp.qq.com/web201605/herolist.shtml'
  3. response=requests.get(u)
  4. print('状态码:{}'.format(response.status_code))
  5. if response.status_code != 200:
  6.      pass else: print("服务器连接正常")
复制代码

03. 数据解析

在数据解析之前,需要提前安装pyquery,pyquery库类似于Beautiful Soup库,初始化的时候,需要传入HTML文本来初始化一个PyQuery对象,它的初始化方式包括直接传入字符串,传入URL,传入文件名等等,这里传入URL,并且查找节点。
  1. #解析数据
  2. from pyquery import PyQuery  
  3. doc=PyQuery(html)
  4. items=doc('.herolist>li')#.items()
  5. print(items)
复制代码

同时遍历,使用find函数查找子节点,遍历爬取图片URL和图片名。
  1. for item in items:
  2.      url=item.find('img').attr('src')
  3.      #print(url)
  4.      urls='http:'+url
  5.      name=item.find('a').text()
  6.      #print(name)
  7.      url_content=requests.get(urls).content
复制代码
04. 保存数据

最后保存数据,需要提前新建一个文件夹用于数据存储,同时,存储数据的代码需要写在for循环里面,不然只会保存一张图片。
  1. with open('C:/Users/尚天强/Desktop/王者荣耀picture/'+name+'.jpg','wb') as file:
  2.          file.write(url_content)
  3.          print("正在下载%s......%s"%(name,urls))
复制代码
同时加一个计时器,用于计时图片爬取的时长,这里显示图片爬取共计耗时7.03秒。
  1. import time
  2. start=time.time()
  3. end=time.time()
  4. print('图片爬取共计耗时{:.2f}秒'.format(end-start))
复制代码

爬取过程动态演示如下,运行过程很快。


以上我们成功将王者荣耀的英雄人物头像爬取下来,代码文件中有高清头像。


将代码进行封装,完整版代码如下,如果你也感兴趣的话可以自己实际运行试一试,爬取生成结果。
  1. import time
  2. start=time.time()  
  3. import requests
  4. from pyquery import PyQuery  
  5. #确定目标
  6. url="https://pvp.qq.com/web201605/herolist.shtml"
  7. #发送请求
  8. html=requests.get(url).content
  9. #print(html)
  10. #解析数据
  11. doc=PyQuery(html)
  12. items=doc('.herolist>li').items()
  13. #print(items)
  14. for item in items:
  15.      url=item.find('img').attr('src')
  16.      #print(url)
  17.      urls='http:'+url
  18.      name=item.find('a').text()
  19.      #print(name)
  20.      url_content=requests.get(urls).content
  21.     #保存数据
  22.      with open('C:/Users/尚天强/Desktop/王者荣耀picture/'+name+'.jpg','wb') as file:
  23.           file.write(url_content)
  24.           print("正在下载%s......%s"%(name,urls))
  25. print("下载完毕")  
  26. end=time.time()
  27. print('图片爬取共计耗时{:.2f}秒'.format(end-start))
复制代码
总结一下,使用Python爬取数据一共分为四步:明确目的、发送请求、数据解析、保存数据,熟练掌握以上四个步骤,即可从网页爬取数据,数据形式不限于文本、数字、图片等,如果你也感兴趣爬虫知识,想更深层次地学习Python数据分析,不妨试试知乎知学堂官方推出的『数据分析训练营』,现在仅需1毛钱即可加入训练营学习,有专业的老师1V1进行指导,感兴趣可点击下方卡片了解~

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则