精华内容
下载资源
问答
  • Python数据爬取

    2020-08-26 18:51:27
    网上爬取数据(crawling) 从本地系统收集数据(scraping):文件、数据库等 网络数据采集模型 2.常用数据爬取工具 第三方库实现爬取 Requests、lxml:灵活,简单 PySpider爬虫框架 提供WebUI界面编写及管理...

    一.数据爬取介绍

    1.数据采集

    数据来源

    • 从网上爬取数据(crawling)
    • 从本地系统收集数据(scraping):文件、数据库等

    网络数据采集模型
    在这里插入图片描述

    2.常用数据爬取工具

    第三方库实现爬取

    • Requests、lxml:灵活,简单

    PySpider爬虫框架

    • 提供WebUI界面编写及管理爬虫
    • 上手快,学习简单
    • 对Windows操作系统支持很差

    Scrapy爬虫框架

    • 功能强大
    • 可定制性强
    • 多线程,爬取效率高

    二.Scrapy爬虫框架

    1.安装配置Scrapy框架

    安装Scrapy

    • conda install scrapy

    配置Scrapy环境变量

    • 将Anaconda的Scripts文件夹加入到Path环境变量中

    创建scrapy项目的命令

    • scrapy startproject 新工程名

    创建Spider

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

    2.Debug爬虫工程

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

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

    调试爬虫

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

    3.Scrapy框架组成

    spiders文件夹

    • 定义爬虫文件

    items.py

    • 定义框架内数据传输格式

    pipelines.py

    • 数据保存模块

    middlewares.py

    • 中间件模块

    settings.py

    • 框架配置模块

    在这里插入图片描述
    执行顺序:

    • 1.Spider的yield将requests发送给Engine
    • 2.Engine对requests不做任何的处理就发送给Scheduler
    • 3.Scheduler(url调度器),生成requests交给Engine
    • 4.Engine拿到requests,通过middleware进行层层过滤发送给Downloader
    • 5.downloader在网上获取到response数据之后,又经过middleware进行层层过滤发送给Engine
    • 6.Engine获取到response之后,返回给Spider,Spider的parse()方法对获取到的response数据进行处理解析出items或者requests
    • 7.将解析出来的items或者requests发送给Engine
    • 8.Engine获取到items或者requests,将items发送给ITEMPIPELINES,将requests发送给Scheduler只有当调度器中不存在任何的requests的时候,整个程序才会停止( 也就是说,对于下载失败的URL,scrapy也会重新进行下载)

    4.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元素相关联

    • Scrapy中css选择器的代码最后也会转换成xpath选择器的代码

    • 正则表达式

    • 提取非标签内容

    xpath语法

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

    路径表达式举例

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

    谓语

    • 谓语用来查找某个特定节点或者包含某个指定的值的节点
    • 谓语被嵌在方括号中
    路径表达式 结果
    /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
      在settings.py中配置Feed exports
    FEED_FORMAT = 'CSV'
    FEED_URI = ‘quotes.csv’
    

    5.爬取动态网页

    查看动态网页代码

    • 按住F12返回的html结果
    • 鼠标右键查看页面源代码:淘宝的商品详情页中的原始html中居然没价格

    动态网页的特点

    • 渲染后的html源码和渲染前的html源码是不同的

    在这里插入图片描述

    爬虫处理动态网页的方法

    • 解决方法
      分析js请求以及html源码去发现动态加载数据的位置
      找到ajax并去请求该接口并解析该请求的返回
    • 分析步骤
      使用Chrome的Network监控网络请求
      反复触发动态加载,分析出数据接口url

    6.网站反爬虫

    网站最主要的反爬虫原因

    • 不遵守规范的爬虫会影响网站的正常使用

    网站反爬虫的其他原因

    • 网站上的数据就是公司的重要资产
    • 爬虫对网站的爬取会造成网站统计数据的污染

    网站反爬虫手段举例

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

    爬虫的反反爬策略

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

    模拟自然人访问频率

    • 配置settings.py控制爬虫爬取行为
      设置爬取间隔
      设置并发爬取量

    相关配置如下

    配置 默认值 说明
    DOWNLOAD_DELAY 0 单位秒,爬取间隔时间为(0.5~1.5)*DOWNLOAD_DELAY
    CONCURRENT_REQUESTS 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 https://www.qq.com
      request.headers

    Scrapy设置随机UA

    • 安装UA生成库
      pip install user_agent
    • 编写的UserAgent中间件的类
      重写process_request()方法
    • 设置settings.py文件设置相应的配置和属性
      在DOWNLOADER_MIDDLEWARES下配置中间件
      启用自定义UserAgent中间件
      禁用Scrapy默认的UserAgnet中间件

    Cookie的介绍

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

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

    • 使用Cookie实现爬取需要登录的信息
      定义Cookie字符串
      在构造request时设置Cookie属性
      cookies=SCRAPE_COOKIE
    • 使用Cookie登录的优缺点
      优点:
      不需要知道登录url和表单字段以及其他参数
      不需要频繁登录输入用户名和密码
      缺点:
      Cookie有过期时间
    展开全文
  • 网上爬取数据(crawling) 从文件系统收集数据(scraping) 文件、数据库等 网络数据采集模型 常用数据爬取工具 第三方库实现爬取 Requests、lxml 灵活、简单 PySpider爬虫框架 提供WebUI界面编写...

    数据采集

    • 数据来源
      • 从网上爬取数据(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两个月,目前都是在网上找爬虫教学尝试自学(最初的目的是爬美女图片) 最开始接触爬虫的时候是一个前辈给我的代码和一个api的网站聚合数据 感觉这个网站还是很友好的 废话不多说,直接说问题...

    自学爬虫中遇到的一点问题和部分解决方法

    本人大一新手,学python两个月,目前都是在网上找爬虫教学尝试自学(最初的目的是爬美女图片)

    最开始接触爬虫的时候是一个前辈给我的代码和一个api的网站聚合数据

    感觉这个网站还是很友好的在这里插入图片描述
    废话不多说,直接说问题,上代码

    import urllib.request  # 网页请求
    import urllib.parse     # url的解析,合并,编码,解码
    import json
    txt = input("请输入成语:")
    chengyu =  urllib.parse.quote(txt)  # 把中文编码
    # 地址 加工
    url = '聚合数据返回的api'
    a = urllib.request.urlopen(url) # 请求
    ys = a.read().decode('utf-8')   # 读取并编码
    zd = json.loads(ys)# 以JSON格式转换成字典
    print(zd['result']['chengyujs'])
    print(zd)
    

    这个代码我仅在聚合数据提供的api中使用过,对其他的网页好像是用不了的

    在这里插入图片描述
    代码中的需要填的api应该使用请求地址请求参数组合使用,中间用?隔开

    但是只能使用别人提供的api就违背的我的目的呀(美女美女!!

    所以又在CSDN中找到一个超详细的爬虫新手教程

    参照这个爬取到了百度贴吧和国外的一个图片网站

    import requests
    a = requests.get(url="https://stocksnap.io/")
    
    print(a)
    

    一开始爬取图片网站的时候返回<Response [200]>

    然后通过百度查到了解决方法

    import requests
    a = requests.get(url="https://stocksnap.io/")
    a.text
    print(a)
    

    问题就完美的解决了,运行结果为:在这里插入图片描述
    但是又有了一些问题:

    为什么加个text就可以成功访问,一开始还以为是没有加浏览头的问题

    爬取出来的网页数据怎么把其中的图片和视频链接(src)提取出来

    为了避免和我一样的新手走不必要的弯路,说一下一些词汇的意思吧

    url : 网页地址,就是浏览器上面的地址栏,复制就行

    headers : 请求头,浏览器头,随便怎么叫,有些网页不让我们直接爬取他们的数据,所以加了反爬虫的代码,请求头就是为了模拟浏览器访问

    爬取出来的数据应该都是str形式的,所以可以通过最上面的代码用json模块转码为字典形式来方便分割

    有用的话收藏一下吧!!!为了美女!!!

    展开全文
  • 简单点说就是图书馆老师有一个项目,需要给一个公司讲什么东西,需要检索系统,但是数据来源却要自己从网上爬,因为账号很贵,不值当的再另购置一个账号,找到了一位学长来做,学长忙着考研(●’◡’●)所以就顺下来...

    个人博客 https://blog.fmujie.cn/

    制作缘由:

    简单点说就是图书馆老师有一个项目,需要给一个公司讲什么东西,需要检索系统,但是数据来源却要自己从网上爬,因为账号很贵,不值当的再另购置一个账号,找到了一位学长来做,学长忙着考研(●’◡’●)所以就顺下来了,哈哈!开始我以为很简单的爬取点东西罢了,然后正真着手做的时候呵呵了~原因下篇博客中有讲 => 在此奉上链接无奈之下想到了用Python自动化爬虫–>就是相当于挂一样,自己帮你操控浏览器来抓取数据效率可想而知爬取较多的话,会有点慢(后话~~哭了┭┮﹏┭┮~)

    所需Python的知识:

    • Selenium:

    Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器,但已经不再支持 PhantomJS了,一般使用chrome和firefox无界面浏览器。Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。具体了解请点这!!!
    UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
    warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
    
    安装:
    pip install selenium
    
    安装驱动程序
    下面介绍几种主流浏览器的驱动程序下载地址:
    浏览器 下载地址
    Chrome https://sites.google.com/a/chromium.org/chromedriver/downloads
    Edge https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
    Firefox https://github.com/mozilla/geckodriver/releases
    Safari https://webkit.org/blog/6900/webdriver-support-in-safari-10/
    我用的时windows系统,chrome浏览器,所以下载了chromedriver_win32,解压出来会有一个.exe可执行程序,将它的路径添加到系统的环境变量就OK了(其实也不需要,下边会说)
    选择页面元素:
    Selenium 的 WebDriver提供了各种方法来寻找元素,假设下面有一个表单输入框:
    <input type="text" name="user-name" id="passwd-id" />
    
    在命令中使用elements可以选取多个元素。
    # 获取id标签值
    element = driver.find_element_by_id("passwd-id")
    # 获取name标签值
    element = driver.find_element_by_name("user-name")
    # 获取标签名值
    element = driver.find_elements_by_tag_name("input")
    # 也可以通过XPath来匹配    推荐使用
    element = driver.find_element_by_xpath("//input[@id='passwd-id']")
    
    简单使用:
    from selenium import webdriver
    from lxml import etree
    from selenium.common.exceptions import TimeoutException
    
    # 设置chromedriver的路径
    driver_path = r"你的chromedriver.exe位置"
    
    # 启用chromedriver(声明浏览器对象)
    driver = webdriver.Chrome(executable_path=driver_path)
    
    #简单的先进入百度首页
    driver.get('https://www.baidu.com/')
    #设置打开浏览器的宽高
    driver.set_window_size(1500, 1000)
    
    # 页面缓冲时间(隐式等待)怕网不好的时候加载慢,导致后续抓取网页代码不全-->属于笨方法,不智能
    driver.implicitly_wait(3)
    
    # 页面缓冲时间(显示等待-->智能),先try以下,不行就等等再try
    try:
        element = WebDriverWait(driver, 5).until(
            EC.presence_of_element_located((By.ID, 'kwssss'))
        )
        print(element)
    except TimeoutException as ex:
        print(ex)
    #抓取网页源码
    html = etree.HTML(driver.page_source)
    # 百度测试   抓取输入框,send_keys是在input里输入内容然后等待三秒钟再清空
    # inputTag = driver.find_element_by_id('kw')
    # inputTag = driver.find_element_by_name('wd')
    # inputTag = driver.find_element_by_class_name('s_ipt')
    inputTag = driver.find_element(By.ID, 'kw')
    inputTag.send_keys('python')
    time.sleep(3)
    inputTag.clear()
    #也可以不清空,抓取搜索按钮,点击搜索实践
    # submitBtn = driver.find_element(By.ID, 'su')
    # submitBtn =driver.find_element_by_xpath("//*[@id='su']")
    # submitBtn.click()
    
    鼠标动作链:
    # selenium行为链测试
    inputTag = driver.find_element_by_id('kw')   #根据ID抓取元素
    submitBtn = driver.find_element(By.ID, 'su')
    actions = ActionChains(driver)   #调用行为连
    actions.move_to_element(inputTag)   #将鼠标移动过去
    actions.send_keys_to_element(inputTag, 'Python')   #向里面填数据
    actions.move_to_element(submitBtn)	#鼠标移动到搜索按钮上
    actions.click(submitBtn)   #点击
    actions.perform()   #行为链启动,否则上边不执行
    
    获取文本值:
    #根据Xpath语法
    html.xpath("Xpath路径/text()")
    
    注意事项:
    1、如果只是想要解析网页中的数据,那么推荐将网页源代码扔给lxml来解析,因为lxml底层使用的是C语言,所以解析效率会更高。
    2、如果是想要对元素进行一些操作,比如给一个文本 框输入值,或者是点击某个按钮,那么必须使用selenium给我们提供的查找元素的方法。
    常见的表单元素:input type = ‘text/password/email/number’button、input[type = ‘submit’]chexbox:input = ‘chexbox’select;下拉列表’’’
    未完待续…
    git完整项目链接
    展开全文
  • 本脚本可以自动化下载中国天气网上,每个城市的天气,风力风向以及最高气温最低气温等信息。下载本资源,直接安装所需的依赖,本地一定要建好指定的库表和字段,具体看代码,下载到数据库。
  • 网上爬取数据 从本地系统收集数据 文件、数据库等 网络数据采集模型 常用数据爬取工具 第三方库实现爬取 Requests、Ixml 灵活,简单 PySpider爬虫框架 提供WebUI界面编程及管理爬虫 上手快,学习简单 对...
  • python爬取数据的时候,需要对一些数据进行分析整合,使数据可视化。绘图过程中,需要导入matplotlib模块,matplotlib是一个Python 2维绘图库,已经成为python中公认的数据可视化工具,通过matplotlib我们可以很轻松...
  • python3爬取巨潮资讯网站年报数据

    万次阅读 热门讨论 2019-02-13 11:41:08
    python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本。最初脚本的原链接忘了,有时间补上,这里只放最新的脚本。 ...
  • 爬取贝壳上二手房信息时,想要将对应房源近一个月的带看信息弄下来,看看哪些房源热度最高。结果毫无意外,简单粗暴的BeautifulSoup+select无法将这部分信息弄下来,如下图,如果带看记录过多,页面是通过按钮控制...
  • 在整个的Python爬虫架构里,从基础到深入我分为了10个部分:HTTP、网页、基本原理、静态网页爬取、动态网页爬取、APP爬取、多协程、爬虫框架、分布式爬虫以及反爬虫机制与应对方法。 1.HTTP 使用Python网络爬虫...
  • 数据来源为浙报传媒地产研究院的网上数据,红色标注区段改写后,可用于提取不同地市、不同时段的房地产土地交易数据,用于深入分析。 2、数据爬取 采用requests进行数据爬取,需要注意对异常数据的处理。本代码中...
  • import requests import re import pymysql 连接MySQL创建数据库 conn = pymysql.connect( host=’localhost’, port=3306, user=’root’, db=’noveltest’, charset=’utf8’ ...cursor = conn.
  • 大家如果想构建相关垃圾相关的图片数据集,可以采用爬虫自行爬取和整理,网上随便找了个代码,该代码主要采用requests和BeautifulSoup函数进行爬取网页信息,下面给了每段函数给了注视(不会可以问Q525894654),...
  • 这次利用python设计一个爬取百度图片上的图片的源码,其中利用的是python的urllib,如果没有按装的,可以使用Anconda在环境里进行安装或者 pip install urllib 这两种方式都可以安装,长话短说,上图吧,点击运行后...
  • python爬取网站数据

    2019-10-08 04:50:43
    开学前接了一个任务,内容是从网上爬取特定属性的数据。正好之前学了python,练练手。 编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了。 问题要从文字的编码讲起。...
  • python爬虫 爬取诗词

    2019-08-08 19:00:14
    今天在网上看到了另外一种爬取数据的方法,今天就给大家展示出来。目前还没有接触爬虫框架,废话不多说,上代码。 import requests import os from bs4 import BeautifulSoup shici_url = '...
  • 本来是想从网上找找有没有现成的爬取空气质量状况和天气情况的爬虫程序,结果找了一会儿感觉还是自己写一个吧。 主要是爬取北京包括北京周边省会城市的空气质量数据和天气数据。 过程中出现了一个错误:...
  • 之前使用python写过基于scrapy的爬虫,想故技重施发现爬取不到想要的数据,仔细看过网页源代码后发现表格中的数据是动态加载的,使用开发者工具想要查看传输的数据结果 发现数据被加密了,百度过解决办法后决定选择...
  • Python爬虫爬取知乎小结

    万次阅读 多人点赞 2016-08-20 23:03:59
    博客首发至Marcovaldo’s blog (http://marcovaldong.github.io/)最近学习了一点网络爬虫,并实现了使用python爬取知乎的一些功能,这里做一个小的总结。网络爬虫是指通过一定的规则自动的从网上抓取一些信息的...
  • 有时因工作或兴趣,需要从网上爬取大量图片并重命名,数据少了还好说,要是成百上千,/(ㄒoㄒ)/~~ 程序员最大的动力就是懒呀! 几行代码,解放双手,机器该做的事就交给机器。 让我们开始吧! 准备: 1.Python IDLE ...
  • python爬取链家新房数据,由于在网上没有搜索到相关代码,所以自己写了一个
  • 最近常在这个网站上下载气象数,包括高空气象数据和地面监测数据。感觉手动挺麻烦了,而且有时候会忘记。不知道有没有大佬知道如何自动爬取该网站的气象数据? 
  • Python爬取网页数据示例

    千次阅读 2019-05-31 18:47:46
    使用requests库 ...topic:爬取“便民查询网上的常用号码” author:小灵子 date:2019-5-31 思路:先从开发者工具找到相应请求头、url等等 <tr bgcolor="#EFF7F0"> <td>匪警</td> ...
  • 自己学习了一段时间Python的基础知识后,编写的从网上爬取的世界港口数据,并存储到SQL Server数据库中。如果在使用的时候发现引用库无法识别,先将这些库注册一下,注册方法自行百度,比较简单
  • Python 爬虫爬取贴吧图片

    千次阅读 2016-11-20 16:41:29
    之前一直在看机器学习,遇到了一些需要爬取数据的内容,于是稍微看了看Python爬虫,在此适当做一个记录。我也没有深入研究爬虫,大部分均是参考了网上的资源。 先推荐两个Python爬虫的教程,网址分别是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 731
精华内容 292
关键字:

python网上爬取数据

python 订阅