Python数据爬取

  • 数据采集
  • 常用数据爬取工具
  • 安装配置Scrpy框架
  • Debug爬虫名称
  • Scrapy框架组成
  • Scrapy返回爬取页面数据
  • 在Scrapy爬虫框架中提取网页数据的方法
    • xpath语法(一)
      • 路径表达式举例
    • xpath语法(二)
    • xpath选择器
  • 爬取从页面提取的URL
  • Scrapy的item模块
  • 将爬取数据保存到文件中
  • 爬取动态网页
  • 网站反爬虫
  • 爬虫的反反爬策略
    • 模拟自然人访问频率
  • User Agent介绍
    • Scrapy设置随机UA
  • Cookie的介绍
  • 查看Cookie
  • 使用Cookie使爬虫突破登录限制

数据采集

  • 数据来源

    • 从网上爬取数据(crawling)
    • 从文件系统收集数据(scraping)
      • 文件、数据库等
  • 网络数据采集模型

常用数据爬取工具

  • 第三方库实现爬取

    • Requests、lxml

      • 灵活、简单
  • PySpider爬虫框架
    • 提供WebUI界面编写及管理爬虫
    • 上手快,学习简单
    • 对Windows操作系统支持很差
  • Scrapy爬虫框架
    • 功能强大
    • 可定制性强
    • 多线程,爬取效率高

安装配置Scrpy框架

  • 安装Scrapy

    • conda install scrapy
  • 配置Scrapy环境变量
    • 将Anaconda的Scripts文件夹加入到Path环境变量中
  • 创建Scrapy项目的命令
    • scrapy startproject 新工程名
  • 创建Spider
    • scrapy genspider 爬虫名 start_url

      • 修改parse()方法,在控制台输出文本
  • 启动Spider
    • scrapy crawl 爬虫名

Debug爬虫名称

  • 使用Python脚本执行命令行启动爬虫

    • 在项目根目录添加脚本文件
    • 调用Scrapy框架的命令行执行方法启动爬虫
      • cmdline模块
      • execute()方法
from scrapy.cmdline import execute
execute('scrapy crawl example_spider'.split())
  • 调试爬虫

    • 在parse()方法中设置断点
    • 使用Debug模式调试项目

Scrapy框架组成

  • spiders文件夹

    • 定义爬虫文件
  • items.py
    • 定义框架内数据传输格式
  • pipelines.py
    • 数据保存模块
  • middlewares.py
    • 中间件模块
  • settings.py
    • 框架配置模块

Scrapy返回爬取页面数据

  • 通过解析方法返回爬取页面数据

    • parse()方法response参数
    • response对象常用属性和方法
属性或方法 作用
url 当前返回数据所对应的页面url
status http请求状态码
meta 用于request与response之间的数据传递
body 返回页面html源码,如用纯正则表达式匹配数据需要获取页面HTML源码
xpath() 使用xpath选择器解析网页
css() 使用css选择器解析网页

在Scrapy爬虫框架中提取网页数据的方法

  • xpath选择器

    • 用于选择XML文档中的节点的语言,可以与HTML一起使用
  • css选择器
    • 用于将样式应用于HTML文档的语言
    • 将样式与特定的HTML元素相关联
  • 正则表达式
    • 提取非标签内容

xpath语法(一)

  • xpath

    • 使用路径表达式来选取XML文档中的节点或节点集
表达式 描述
nodename 选取的节点名
/ 从根节点选取
// 选取所有符合条件的节点,而不考虑它们的位置
· 选取当前节点
选取当前节点的父节点
@ 选取属性

路径表达式举例

路径表达式 结果
/bookstore 选取元素bookstore
/bookstore/book 选取属于bookstore的子元素的所有book元素
//book 选取所有book子元素,而不管它们在文档中的位置
/bookstore//book 选取属于bookstore元素的后代的所有book元素,而不管它们位于bookstore之下的什么位置
//@lang 选取名为lang的所有属性
/bookstore/book/text() 选取属于bookstore的子元素的所有book元素的文本

xpath语法(二)

  • 谓语

    • 谓语用来查找某个特定节点或者包含某个指定的值的节点
    • 谓语被嵌在方括号中
路径表达式 结果
/bookstore/book[1] 选取属于bookstore子元素的第一个book元素
//title[@lang] 选取所有拥有名为lang的属性的title元素
//title[@lang=‘eng’] 选取所有拥有值为eng的lang属性的title元素

xpath选择器

  • Scrapy中xpath选择器

    • 基于lxml库
  • 获取选择器的网页数据
    • extract()

      • 提取selector列表中的网页数据
      • 如果列表为空,取下标为0的网页数据会抛出异常
    • extract_first()
      • 提取selector列表中下标为0的网页数据
      • 如果列表为空,不会抛出异常,返回None

爬取从页面提取的URL

  • 使用场景

    • 详情页爬取
    • 多层级目录爬取
  • 提取URL发起HTTP请求
    • 构造request对象

      • 指定HTTP请求的URL
      • 指定处理这个页面的回调方法
      • 关闭去重标记
    • 使用yield返回request对象
  • request与对应的response传递数据
    • meta字典

Scrapy的item模块

  • item的作用

    • 定义框架中的数据传输的形式
  • 定义item
    • 定义item类并继承scrapy.Item
    • 定义变量
      • 变量名
      • 变量类型
        • scrapy.Field()
  • 使用item
    • 使用字典的方式给item赋值

      • item[“变量名”]=赋值
  • 使用yield返回item

将爬取数据保存到文件中

  • Feed exports

    • 将数据导出成常用数据格式的方法
  • 默认支持的格式
    • JSON
    • JSON lines
    • CSV
    • XML
  • 使用Feed exports的方法
    • 在命令行使用-o来调对应的Feed exports
    • 在setting.py中配置Feed exports
FEED_FORMAT = 'CSV'
FEED_URI = ‘quotes.csv’

爬取动态网页

  • 查看动态网页代码

    • 按住F12返回的html结果
    • 鼠标右键查看页面源代码
      • 淘宝的商品详情页中的原始html中没有价格
  • 动态网页的特点
    • 渲染后的html源码和渲染前的html源码是不同的

网站反爬虫

  • 网站最主要的反爬虫原因

    • 不遵守规范的爬虫会影响网站的正常使用
  • 网站反爬虫的其他原因
    • 网站上的数据就就是公司的重要资产
    • 爬虫对网站的爬取会造成网站统计数据的污染
  • 网站反爬虫手段举例
    • 根据访问IP频率封禁IP

      • 一个IP某一个时刻访问频率太频繁,则封禁
    • 设置账号登录时长,账号访问过多封禁
    • 弹出数字验证码和图片确认验证码
    • 对API接口的限制

爬虫的反反爬策略

  • 反反爬的总体思想

    • 将爬虫伪装成自然人的浏览行为
  • 自然人浏览的特点
    • 访问频率不会非常的高
    • 使用的是浏览器进行访问
    • 网站设置登录要求后仍能正常使用
    • 可以完成验证操作
  • Scrapy反反爬功能实现
    • 爬虫配置settings.py
    • 爬虫框架中间件

模拟自然人访问频率

  • 配置settings.py控制爬虫爬取行为

    • 设置爬取间隔
    • 设置并发爬取量
  • 相关配置
配置 默认值 说明
DOWNLOAD_DELAY 0 单位秒,爬取间隔时间为(0.5~1.5)*DOWNLOAD_DELAY
CONCURRENT_REQUESTS_PER_DOMAIN 16 Scrapy downloader 并发请求的最大值
CONCURRENT_REQUESTS_PER_DOMAIN 16 对单个网站进行并发请求的最大值
CONCURRENT_REQUESTS_PER_IP 0 对单个IP进行并发请求的最大值

User Agent介绍

  • User Agent的本质

    • 一个特殊字符串头
  • User Agent的作用

    • 使服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等
  • 查看浏览器UA的方法

  • 查看Scrapy爬虫UA的方法

    • scrapy shell http://www.qq.com
    • request.headers

Scrapy设置随机UA

  • 建立user-agent池

    • 在每次发送request之前从agent池中随机选取一项设置request的User-Agent
  • 编写的UserAgent中间件的基类
    • 自定义RotateUserAgentMiddleware类

      • 继承UserAgentMiddleware
  • 设置settings.py文件设置相应的配置和属性
    • 在DOWNLOADER_MIDDLEWARES下配置中间件

      • 启用自定义UserAgent中间件
      • 禁用Scrapy默认的UserAgent中间件

Cookie的介绍

  • Cookie保存的位置

    • 总是保存在用户客户端浏览器中
  • Cookie的有效性
    • 最短的浏览器关闭后就消失了
    • 最长是可以一直保存,直到被删除
  • Cookie就是用来绕开HTTP的无状态性的
  • 服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器的状态
  • Cookie常用于保持用户登录状态

查看Cookie

  • 打开网页时请求中携带的Cookie

  • 打开网页时服务器设置客户端的Cookie

使用Cookie使爬虫突破登录限制

  • 使用Cookie实现爬取需要登录的信息

    • 定义Cookie字符串

      • 在settings.py中定义DEFAULT_COOKIE字符串
    • 在构造request是设置Cookie属性
      • cookies=DEFAULT_COOKIE
  • 使用Cookie登录的优缺点
    • 优点:

      • 不需要知道登录url和表单字段以及其他参数
      • 不要频繁登录输入用户名和密码
    • 缺点:
      • Cookie有过期时间

大数据——Python数据爬取相关推荐

  1. python如何爬虫网页数据-python爬虫——爬取网页数据和解析数据

    1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 只要浏览器能够做的事情,原则上,爬虫都能够做到. ...

  2. python爬表格数据_python爬虫,爬取表格数据

    python爬虫,爬取表格数据 python爬虫,爬取表格数据 python爬虫,爬取全国空气质量指数 编程环境:Jupyter Notebook 所要爬取的网页数据内容如下图 python爬虫代码及 ...

  3. python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(一)

    python 爬虫爬取疫情数据,爬虫思路和技术你全都有哈(二.数据清洗及存储) 爬起疫情数据,有两个网址: 1.百度:链接 2.丁香园疫情:链接 在这两个中,丁香园的爬虫相对简单一点,所以今天就展示一 ...

  4. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...

    这是我用大V冯大辉老师最近5000多条微博内容做的词云,大家可以围观一下. 之前也写了一篇用python 来爬取朋友的QQ说说,大家也可以围观一下 好了,开始进入正题:#coding:utf-8 &q ...

  5. Python之爬取百度地图兴趣点(POI)数据

    关于爬虫系列,前三篇文章分别讲了三个简单案例,分别爬取了<你好,李焕英>电影豆瓣热门短评.58同城在售楼盘房源信息以及安居客网二手房小区详情页数据.通过前三个案例,相信大家都对爬虫有了简单 ...

  6. python requests 爬取数据

    python requests 爬取数据 import requests from lxml import etree import time import pymysql import json h ...

  7. python爬虫数据分析可以做什么-python爬虫爬取的数据可以做什么

    在Python中连接到多播服务器问题,怎么解决你把redirect关闭就可以了.在send时,加上参数allow_redirects=False 通常每个浏览器都会设置redirect的次数.如果re ...

  8. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

  9. Python+Selenium爬取新浪微博评论数据

    Python+Selenium爬取指定新浪微博的数据 微博分析 微博端类型 选择爬取对象 Ajax动态加载数据分析 Python实现代码 微博分析 微博端类型 首先找到一个待爬取的微博,需要注意的是, ...

  10. Python爬虫---爬取数据(上)

    又是女票,拿了3万多条的13年某地区的公司信息,但是三年过去了,工商局的注册信息发生了巨大变化,有的注册资本增加了,有的公司老板变多了,更有不少公司不存在了,因此,需要一份最新的信息以便于她进行使用. ...

最新文章

  1. springboot集成swagger2测试接口
  2. easyui datagrid 表格 属性和方法
  3. sharepoint 2010 创建内容类型2
  4. 交替最小二乘矩阵分解_使用交替最小二乘矩阵分解与pyspark建立推荐系统
  5. 前端学习(508):水平和垂直居中第一种方式
  6. DOM3 textInput事件-softbar
  7. 打开电脑的组策略编辑器-计算机配置→管理模板下怎么没有网络,我应该怎么做才能通过FireWire卡屏幕播放?...
  8. 第13章 Swing程序组件----常用布局管理器
  9. 全网首发:使用命令行编译VS工程为Win32/x64
  10. Power Query M语言全部list函数,快速分类掌握
  11. word里双横线怎么打_word 双下横线怎么打出来
  12. RH358配置电子邮件传输--配置仅发送电子邮件服务
  13. 面试官问你的缺点是什么,这么回答漂亮!
  14. VBA-关闭屏幕刷新
  15. 智慧水利信息化系统解决方案
  16. java绘制图片验证码两种方式实现,点击【图片】刷新和点击【看不清换一张】刷新
  17. 【SDX62】WCN685X hostapd配置WPA2/WPA3混合模式,WPA3连接成功,只支持WPA2的设备连接失败问题分析及解决方案
  18. 【OpenCV图像处理】十六、图像空域滤波(下)
  19. Xdebug中文文档-安装
  20. php DOS word在线预览,如何在 Zoho Docs 中在线预览文件

热门文章

  1. 掌握Android阅读源码的两种简单方式
  2. Android开发实战记录
  3. kali linux下sqlmap使用教程
  4. 十个超级简单的Python代码,拿走即用
  5. #166 (Div. 2)
  6. y85手机Android密码,vivoy85忘记解锁密码怎么办?vivoy85解锁屏幕锁教程工具
  7. CentOS7环境下MySQL升级
  8. java 窗口组件的布局_Java 窗口 的常用布局
  9. vmd分解matlab程序,matlab中使用VMD(变分模态分解)
  10. 使用Xftp连接Linux