首页 > 编程语言 >Python爬虫

Python爬虫

时间:2023-06-11 17:22:48浏览次数:59  
标签:网页 Python 爬虫 爬取 URL Pycharm

目录

Python Spider

Talk is cheap.Show me the code!

第一章 爬虫入门

用户与网络的沟通本质是数据交换,而爬虫做的是不断获取网络的数据以供用户使用!

1.1 爬虫概述

爬虫是一种按一定规则自动采集抓取万维网信息(网页信息)的程序或脚本

1.1.1 爬虫原理

  • 爬虫别名
    • 网络爬虫又叫网络蜘蛛网页蜘蛛网络机器人网页追逐者(FOAF)
  • 爬虫原理
    • 爬虫好似蜘蛛在蛛网上循环往复、周而复始爬来爬去,以获得互联网的网页信息
  • 爬虫图示
    • image
    • (1)先设定一个或若干个初始网页的URL,将初始URL加入待爬取URL列表
    • (2)从待爬取列表逐个读取URL,并将URL加入已爬取URL列表中,然后下载网页
    • (3)解析已下载网页,提取所需数据和新URL,并存储提取的数据
    • (4)将新URL与已爬列表比对,检查是否已爬,若未爬将其放入待爬末尾等待读取
    • (5)如此往复,直到待爬URL列表为空或满足设定终止条件,最终实现遍历网页
  • 爬取地址
    • 爬取地址:URNURLURIURI=URN+URL,建议用URI代替URL

1.1.2 爬虫分类

  • 按系统结构和工作原理的不同进行爬虫分类
    • 通用网络爬虫(又称全网爬虫):根据网络爬虫基本原理实现,如:搜索引擎
    • 聚焦网络爬虫:经过滤处理只选择爬取特定网页,如:预先定义要爬的相关网页
    • 增量式网络爬虫:实时监测网站数据更新,只爬取有更新的网页和新产生的网页
    • 深层网络爬虫:爬取不能通过静态链接获取的信息,如:用户注册后才显示的网页

1.1.3 爬虫应用

  • 搜索引擎内置爬虫程序
    • Google的Googlebot爬虫百度的Baiduspider爬虫必应的Bingbot爬虫
  • 企业用户新建爬虫程序
    • 企业用户因要采集和分析数据,所以企业用户会新建爬虫程序,如:爬取用户信息
  • 普通用户新建爬虫程序
    • 普通用户因要采集自己关注的主题,所以普通用户会新建爬虫程序,如:爬取论文

1.2 爬虫流程

爬虫的流程分为首先爬取网页,接着解析网页,最后存储数据

1.2.1 爬取网页

  • 爬取网页的库:urllib(内置)、requestsselenium
  • 爬取网页指爬虫向服务器发送请求获取网页源代码,服务器返回含所需数据的响应

1.2.2 解析网页

  • 解析网页的库:beautifulsoup4lxml、正则表达式(非库)
  • 解析网页指据网页结构分析源代码从中提取数据,它使杂乱数据变清晰以处理分析

1.2.3 存储数据

  • 解析网页提取数据后要将数据存储以便后续使用
  • 可将数据存储到JSON文件CSV文件MySQL数据库MongoDB数据库

1.3 爬虫协议

爬虫协议主要指Robots协议,它是互联网世界的道德规范,用于规范相关爬虫准则

1.3.1 Robots协议

  • Robots协议(又称爬虫协议)全称是网络爬虫排除标准
  • Robots协议可让网站管理者设置是否允许爬虫程序自动获取网站信息
  • Robots协议允许在网站根目录放robots.txt文件,让爬虫访问网站时来检查

1.3.2 robots.txt文件简介

  • 知乎robots文件
  • 淘宝robots文件
  • 有道翻译robots文件
  • robots.txt文件中表明了哪些链接允许、那些连接不允许爬虫程序获取
  • robots.txt文件若存在爬虫按文件规定来访问,若无访问没被保护的网页
  • robots.txt文件会在爬虫程序访问网站时,首先检查该网站根目录下是否存在

1.3.3 robots.txt文件详解

  • User-agent: Googlebot-Image,表示针对谷歌图片爬虫
  • Disallow: /*?guide*,表示禁止爬取网站中所有包含guide的网址
  • Disallow: /appview/,表示禁止爬取网站根目录的appview文件夹下的文件
  • Allow: /search-special,表示允许爬取根目录以search-special开头的文件夹

1.3.4 爬虫准则

  • 爬虫问题
    • 若所爬数据用于个人或科学研究基本不违法,但用于转载或商业可能会犯法
    • 爬取数据时要遵守Robots协议和控制请求网页的速度及尊重网站的知识产权
  • 爬虫避坑
    • 爬虫应避免以下场景:著作权、商业秘密、个人隐私、不正当竞争、侵入计算机
  • 爬虫道德
    • 有才无德是小人,有德无才是君子,德才兼备乃圣人也!

1.4 爬虫环境

爬虫要能正常运行必须提前搭建好其环境,即Python运行环境

1.4.1 原生Python+Pycharm(PC)

  • 原生Python
    • Python官网下载
    • 原生Python在官网下载后按部安装即可,采用了极简主义的设计理念
  • Pycharm(PC)
    • Pycharm官网下载
    • Pycharm在官网下载后按部安装即可,它是Jetbrains旗下的Python编辑器
  • 两者注意事项
    • 要根据原生python版本下载对应Pycharm版本
    • 原生Python必须集成在Pycharm中,才能被Pycharm使用

1.4.2 原生Python+Anaconda+Pycharm(PC)

  • Anaconda
    • Anaconda官网下载
    • Anaconda在官网下载后按部安装即可,它是一个开源的Python发行版本
  • Pycharm 常识
    • PycharmPython源文件扩展名为.py
    • 可用拖入、粘贴、导入放到项目文件夹根目录下的方式,实现文件导入PyCharm
  • Pycharm 虚拟环境
    • Pycharm中的Virtualenv是一个虚拟环境管理器,它可以创建多个虚拟环境
    • Virtualenv为不同项目提供独立Python运行环境,以解决不同项目多版本冲突
    • Virtualenv安装所需包时会自动安装到该虚拟环境下,不会影响其他的项目环境
  • 三者注意事项
    • 可用虚拟环境设置是原生Python还是Anaconda集成在Pycharm

1.5 爬虫资源

Python网络爬虫技术案例教程

标签:网页,Python,爬虫,爬取,URL,Pycharm
From: https://www.cnblogs.com/zhr-cf-fc/p/17473226.html

相关文章

  • 实验6 turtle绘图与python库应用编程体验
    task1_1代码:fromturtleimport*defmove(x,y):'''画笔移动到坐标(x,y)处'''penup()goto(x,y)pendown()defdraw(n,size=100):'''绘制边长为size的正n变形'''foriinrange(n):......
  • Python中的logging模块
    官方文档基本用法下面的代码展示了logging最基本的用法。#-*-coding:utf-8-*-importloggingimportsys#获取logger实例,如果参数为空则返回rootloggerlogger=logging.getLogger("AppName")#指定logger输出格式formatter=logging.Formatter('%(ascti......
  • Centos 7.4+ 通过anaconda 安装Python3.10
    做记录,在centos里安装3.10版本时,老是报错ssl。或者一些其他问题,做个记录吧。大概用了2天才弄好,主业不是运维所以不太了解在https://www.anaconda.com/官网下载安装,此处自己根据系统、根据版本,自己安装下载地址:https://www.anaconda.com/download#downloads安装好后condai......
  • 实验6 turtle绘图与python库应用编程体验
    实验任务1task1_1.py程序源码:1fromturtleimport*23defmove(x,y):#画笔移动到坐标(x,y)处4penup()5goto(x,y)6pendown()78defdraw(n,size=100):#绘制边长为size的正n变形9foriinrange(n):10forward(size)11......
  • python: Decorators
      #装饰器defprintpy(func):definner_func():func()print("hellopython!GeovinDu")returninner_func#@装饰器@printpydefprinthello():print("helloworld!")#调用printhello()'''De......
  • Python modbus_tk 库源码分析
    modbus_tk源代码分析前言modbus_tcp协议是工业项目中常见的一种基于TCP/IP协议的设备数据交互协议。作为TCP/IP协议的上层协议,modbus_tcp协议涉及到两个概念:client和server。但更标准的叫法应该是master和slave。Slave:TCP/IP协议中的server方Master:TCP/IP协......
  • 实验六 turtle绘图与python库应用编程体验
    1fromturtleimport*234defmove(x,y):5penup()6goto(x,y)7pendown()8910defdraw(n,size=100):11foriinrange(n):12fd(size)13left(360/n)141516defmain():17pensize(2)18pen......
  • python: generator
    a=10defaddgoled():globalaa+=1dd=[{'name':'zhang','age':10},{'name':'tu','age':13}]d={'name':'zhang','age':10}defadddict():globald#......
  • 实验6 turtle绘图与python库应用编程体验
    task1_11fromturtleimport*234defmove(x,y):5penup()6goto(x,y)7pendown()8910defdraw(n,size=100):11foriinrange(n):12fd(size)13left(360/n)141516defmain():17pensize(2)18......
  • Linux下安装python3.7.9
    操作系统与原有python[pythondemo@localhost~]$cat/etc/centos-releaseCentOSLinuxrelease7.4.1708(Core)[pythondemo@localhost~]$pythonPython2.7.5(default,Aug42017,00:39:18)[GCC4.8.520150623(RedHat4.8.5-16)]onlinux2Type"help",......