017-爬虫-爬虫结果存入 sqlserver

2023-11-04

先上图,结果

【一】利用这个模块连接sql server

import pymssql #引入pymssql模块

 安装方式:

conda install pymssql

【二】连接失败的可能原因

参考此博客,需要开启几个服务   https://blog.csdn.net/pennykoon/article/details/79155443

【三】测试代码

import pymssql #引入pymssql模块

def conn():
    connect = pymssql.connect('Y_PIN-PC', 'zhaolong', 'zhaolong', 'test') #服务器名,账户,密码,数据库名
    if connect:
        print("连接成功!")
    return connect


if __name__ == '__main__':
    conn = conn()

【四】pymssql 使用教程

参考博客,随便看下就行,当然得会SQL server https://www.cnblogs.com/baiyangcao/p/pymssql_basic.html

  • 使用connect创建连接对象
  • connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行
  • cursor.executeXXX方法执行SQL语句,cursor.fetchXXX获取查询结果等
  • 调用close方法关闭游标cursor和数据库连接

【五】全部代码调试  (1)

只能把代码里的内容存储到数据库

import pymssql #引入pymssql模块

def conn():
    connect = pymssql.connect('Y_PIN-PC', 'zhaolong', 'zhaolong', 'test') #服务器名,账户,密码,数据库名
    if connect:
        print("连接成功!")
        #----------------------------------使用connect创建连接对象-----------------------
        cursor = connect.cursor()
        # ---------------------------------新建、插入操作--------------------------------
        cursor.execute("""
        IF OBJECT_ID('persons', 'U') IS NOT NULL
            DROP TABLE persons
        CREATE TABLE persons (
            id INT NOT NULL,
            name VARCHAR(100),
            salesrep VARCHAR(100),
            PRIMARY KEY(id)
        )
        """)
        cursor.executemany(
            "INSERT INTO persons VALUES (%d, %s, %s)",
            [(1, 'John Smith', 'John Doe'),
             (2, 'Jane Doe', 'Joe Dog'),
             (3, 'Mike T.', 'Sarah H.')])
        # 如果没有指定autocommit属性为True的话就需要调用commit()方法
        connect.commit()

        # 查询操作
        cursor.execute('SELECT * FROM persons ')
        row = cursor.fetchone()
        while row:
            print("ID=%d, Name=%s" % (row[0], row[1]))
            row = cursor.fetchone()

        # 也可以使用for循环来迭代查询结果
        # for row in cursor:
        #     print("ID=%d, Name=%s" % (row[0], row[1]))

        # 关闭连接
        connect.close()







    return connect


if __name__ == '__main__':
    conn = conn()

【六】把爬虫结果存储到数据库里啊

(报错1)SyntaxError: Non-UTF-8 code starting with '\x

(图6.1) 改变这个地方,由gbk改为 UTF-8即可哈

【七】改后的代码

import pymssql #引入pymssql模块
import re
from urllib import request


def _fetch_content():
    r = request.urlopen(url)
    htmls = r.read().decode('utf-8', 'ignore')
    # htmls = str(htmls, encoding='utf-8')
    # htmls = r.read().decode('utf-8')
    return htmls


def refine(anchors):
    l = lambda anchor: {'name': anchor['name'][0].strip(), 'number': anchor['number'][0]}
    return map(l, anchors)


def sort__seed( anchor):
    r = re.findall('\d*', anchor['number'])
    number = float(r[0])
    if '万' in anchor['number']:
        number *= 10000
    return number


def sort__rank(anchors):
    return sorted(anchors, key=sort__seed, reverse=True)


def __analysis(htmls):
    root_html = re.findall(root_pattern, htmls)

    for html in root_html:
        number = re.findall(number_pattern, html)
        name = re.findall(name_pattern, html)
        anchor = {'name': name, 'number': number}
        anchors.append(anchor)
    return anchors


def __show( anchors):
    for anchor in anchors:
        print('name : ' + anchor['name'] + ' number : ' + anchor['number'])


def __write(anchors):
    fr = open("spider__write.txt", "w", encoding="utf-8")
    # fr.write('id+^+name+^+viewer__number\n')
    for anchor in anchors:
        fr.write(anchor['name'] + '^' + anchor['number'] + '\n')
    fr.close()


def conn():
#------------------------建立连接-------------
    connect = pymssql.connect('Y_PIN-PC', 'zhaolong', 'zhaolong', 'test') #服务器名,账户,密码,数据库名
    if connect:
        print("连接成功!")

    cursor = connect.cursor()
#-----------------------建表--------------
    cursor.execute("""
            IF OBJECT_ID('persons','U') IS NOT NULL
                DROP TABLE persons
            CREATE TABLE persons (
                name VARCHAR(100),
                number VARCHAR(100)

            )
            """
                   )

#-----------------------------打开保存的TXT文件-----------------------
    count = 0
    fr = open("d:\spider__write.txt", "r")
    print  ("da kei  wenjian  cheng  gong ")
    for line in fr:
        count += 1
        if (count == 1):
            continue
        line = line.strip().split('^')
        print ("",line)
#-----------------------------插入内容-------------------------
        cursor.execute("INSERT INTO persons VALUES('%s','%s')" %(line[0], line[1]))
        # cursor.executemany("INSERT INTO persons VALUES(name number)"%(line[0],line[1]))
    # 如果没有指定autocommit属性为True的话就需要调用commit()方法
        connect.commit()
    # --------------------查询操作---------------
    cursor.execute('SELECT * FROM persons ')
    row = cursor.fetchone()
    while row:
        # print("ID=%s, Name=%s" % (row[0], row[1]))
        print("ID=%s, Name=%s" % (row[0], row[1]))
        row = cursor.fetchone()

    # # # 也可以使用for循环来迭代查询结果
    # for row in cursor:
    #     print("ID=%d, Name=%s" % (row[0], row[1]))
    #
    # ---------------关闭连接-----------
    connect.close()

    return connect


if __name__ == '__main__':
    #--------------------为爬虫所准备---------------
    url = 'https://www.huya.com/g/wzry'
    root_pattern = '<span class="txt">([\s\S]*?)</li>'
    name_pattern = '<i class="nick" title="([\s\S]*?)">'
    number_pattern = '<i class="js-num">([\s\S]*?)</i>'
    anchors = []

    htmls = _fetch_content()
    anchors =__analysis(htmls)
    anchors = list(refine(anchors))
    anchors = sort__rank(anchors)
    # __show(anchors)
    __write(anchors)
    conn =conn()
【八】

 

 

部分参考文献:

https://blog.csdn.net/qq_40475529/article/details/82929401

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

017-爬虫-爬虫结果存入 sqlserver 的相关文章

  • leetcode905–按奇偶排序数组(经典/原地排序)

    经典题目 给定一个非负整数数组 A 返回一个数组 在该数组中 A 的所有偶数元素之后跟着所有奇数元素 你可以返回满足此条件的任何数组作为答案 主要要掌握最优解 这道题很简单 类快排 你不是真正的快排 Note The returned ar
  • 如何为你的文本标签添加圆点、三角等不规则图形-保姆级教程

    1 通过无序列表 有序列表可以简单的生成带符号的文本 带符号的文本 https img blog csdnimg cn 9005611a7fa74d188ee071cd63fae0cf png 具体代码如下 h4 Disc 项目符号列表 h
  • Java实现内网穿透

    使用场景 1 当公司的一些系统功能使用了第三方服务时 通常第三方会回调我们的接口 在对接阶段 为了方便debug 我们肯定希望能回调到我们本地电脑上来 2 当你在公司想访问部署在家里电脑的服务或者文件时 3 当你的外地同事想访问你本地的服务
  • spring-boot-starter-data-mongodb 配置副本集读写分离、故障转移等

    一 为什么需要 MongoDB 副本集配置 副本集配置为数据库提供了高可用的保证 mongodb 副本集能够支持在主节点宕机的情况进行自动选主 同时利用多个从节点进行数据冗余 达到数据热备份的作用 同时由于数据同步 可支持读写分离 二 如何
  • es中must和should的组合查询

    使用must和should混用的时候 should不生效 列如 需要同时满足productRecomentd和location shold中满足一个条件就返回 经过多次测试 发现should不起效果 from 0 size 2 query
  • Java学习—字面常量值,变量,最终变量

    一 什么是字面常量值 他们是在程序中固定写死的的值 二 各种数据类型的表示 所有字符串类型的字面常量值必须加 所有char类型的字面常量值必须加 boolean类型的常量值只有两个 true false 浮点类型的常量值 没有加F或f的都是
  • unity 模型销毁_Unity3D常用 API 之实例化与销毁

    1 实例化游戏物体 1 1 游戏中的案例介绍 在很多 MMORPG 类的游戏中都有类似于 金钱副本 的副本关卡 在这类副 本中通常都是限定一个时间 在这个时间内玩家可以尽情的破坏 然后收集金钱 分析游戏截图讲解场景元素 见图 场景中所有的坛
  • latex 如何添加圆圈数字?

    众所周知 LATEX 提供了 textcircled 命令用以给字符加圈 但效果却不怎么好 实际上 加圈并不是一个平凡的变换 它会涉及到圈内字符形状的微调 而这是几乎无法在 TEX 宏层面解决的 因此 要得到比较好的效果 最好能使用预先设计
  • iwebsec靶场 文件包含漏洞通关笔记9-file://伪协议利用

    目录 前言 1 file协议 2 利用条件 1 file 用于访问本地文件系统 2 file 必须是绝对路径 第09关 file 伪协议利用 1 打开靶场 2 源码分析 3 获取 etc passwd渗透 前言 1 file协议 file协
  • QCQI学习笔记(1)

    Chapter I II overview of the quantum information probabilistic model qubit tensor product dirac notation Chapter III Sup
  • electron-上传文件,下载csv txt xlsx

    electron 主进程 渲染进程 在vue中调用接口 相互通信 csv txt 上传csv文件 将csv文件读取内容 iconv lite 解决读取内容乱码 xlsx 上传xlsx文件 xlsx文件内容读取 下载xslx文件 简单无样式的
  • 虚析构函数

    自动调用基类部分的析构函数对基类的设计有重要影响 删除指向动态分配对象的指针时 需要运行析构函数 在释放对象的内存之前清除对象 处理继承层次中的对象时 指针的静态类型可能与被删除对象的动态类型不同 可能会删除 实际指向派生类对象的基类类型指
  • Android 10 修改系统默认的字体大小

    代码路径 frameworks base core java android content res Configuration java frameworks base packages SettingsProvider res valu
  • 美团外卖智能陪伴型导购的探索与实践

    相比于其他电商场景 外卖场景对于实时发现和反馈用户兴趣的能力有着更高的要求 近年来 美团外卖算法团队摸索出了一套适用于外卖场景的智能陪伴型导购架构和策略 这一举措已经取得了显著成效 本文将详细介绍外卖搜索技术团队搭建智能陪伴型导购时 所遇到
  • 浅析深究什么是中间件

    本文发布于2009年10月30日 1 由来 因为工作的原因 我从金蝶集团调入金蝶中间件公司工作以来 经常遇到一个问题就是中间件公司是个什么公司 中间件是什么 金蝶不是做ERP的吗 怎么也做中间件 这是我以前在金蝶集团时无法想象的问题 因为金
  • R语言笔记四

    str function str Compacktly display the internal structure of an R object A diagnostic function and an alternative to su
  • AndroidUI库集合

    https hndeveloper github io 2017 github android ui html 进度条 https github com Vension V AndroidCollectSources
  • 双指针和递归

    一 双指针 1 给你一个n 给你n个数 再给一个val 去掉所有等于val的值 思路 当i和j位置都是非val值 i j 当i位置是val j 当i是val j是非val 交换 i j 当j走到最后一个位置的时候 停了 输出0 i位置的值
  • 量化术语速查表(持续更新)

    本文介绍一些量化投资相关术语 帮助大家更好地了解该行业 作者 bigquant 阅读时间 15分钟 本文由BigQuant宽客学院推出 难度标签 以下术语没有先后顺序 并将持续更新 金融相关 股票 股份公司发行的所有权凭证 债券 承诺按一定

随机推荐

  • GDB+Jlink调试注意事项

    1 在汇编调用C的一步要用 Step in 不要用 Step Over 因为main对于汇编来说只是一个函数 会造成程序全速运行 不能单步调试 对于汇编代码 Step in Step Over 是一样的效果 所以在进行main函数之前最好都
  • 表白代码大全_隐藏表白系列都在这里了

    点击上方 搞siao君 右上角找到 立刻设置我为 星标 置顶 每天第一时间推送给你 每天都有不一样的精彩 喜欢就多多分享哦 一 微信隐藏表白代码大全 爱你我爱你我爱你我爱你我爱你我爱你我
  • List与ArrayList的区别

    在刷题的时候发现ArrayList初始化时 有下面两种情况 List
  • 2023五大自动化测试的 Python 框架

    自2018年被评选为编程语言以来 Python在各大排行榜上一直都是名列前茅 目前 它在Tiobe指数中排名第三个 仅次于Java和C 随着该编程语言的广泛使用 基于Python的自动化测试框架也应运而生 且不断发展与丰富 因此 开发与测试
  • Nacos和Zookeeper对比

    主要平时用的较多是配置中心和服务注册中心 所以也是结合这两点功能做出对应的对比 主要比对集群模式 以下仅仅整理了个人理解后的观点 如有疑问欢迎咨询讨论 1 Zookeeper 其实明白一点Zookeeper的功能主要是它的树形节点来实现的
  • GIT Please, commit your changes or stash them before you can merge. Aborting

    用git pull来更新代码的时候 遇到了下面的问题 C error Your local changes to the following files would be overwritten by merge xxx xxx xxx p
  • Qt通过读取XML文件,绘制图形界面

    最近需要实现通过读取xml文件的形式动态绘制界面的需求 这样会很方便 在外界修改xml文件就可以了 不需要重新编译程序 一 XML文件 XML的格式和一些说明 本文就不在介绍了 菜鸟教程有更清晰的入门介绍 菜鸟教程 XML 二 QT中读取X
  • React兄弟组件之间的通讯

    案例要求 达到这样一个效果 组件拆分 搜索框是一个组件 传递状态 下面的展示列表是一个组件 使用状态 方式一 状态存在父组件之间 父组件传递给子组件消息可以使用props 子组件给父组件之间传递消息可以使用函数实现 APP组件代码 impo
  • 计算机D盘无法读取,解决Mac上的USB错误“此计算机无法读取您插入的磁盘”

    尽管USB驱动器是最紧凑 最可靠的存储解决方案 但遇到它们的问题并不少见 您可能会发现该设备不可访问 或者在连接设备时可能会遇到诸如 此计算机无法读取您插入的磁盘 之类的错误消息 您如何解决此类错误 是否可以再次访问无法读取的USB上的数据
  • 一文搞懂vue的$attrs和$listeners,和react props的对比后更容易记忆

    近期编写vue组件 用到vue新增的api attrs和 listeners 看了网上很多帖子 感觉介绍的都不直观 并不能让使用者快速了解二者到底是什么作用 本文结合实际使用场景 给出 attrs和 listeners的使用方法 并且引入引
  • gemm c++

    http www pittnuts com 2015 08 gemm of caffe 转载于 https www cnblogs com Wanggcong p 5281521 html
  • SpringBoot>16 - 使用 @Scheduled 实现定时任务

    简介 实现定时任务的方式很多 基于JDK的Timer Quartz等等 本章介绍 SpringBoot1 5 中Spring Task实现定时任务 非常方便 个人学习总结 链接 springboot springcloud docker 等
  • 【STM32】【HAL库】遥控关灯2 分机

    相关连接 STM32 HAL库 遥控关灯0 概述 STM32 HAL库 遥控关灯1主机 STM32 HAL库 遥控关灯2 分机 STM32 HAL库 遥控关灯3 遥控器 需求 接收RF433和红外信号 根据信号内容控制舵机 硬件设计 主控采
  • 什么是DevOps的三步工作法?

    作者介绍 张乐 DevOps时代联合创始人 高效运维社区合伙人 DevOpsDays大会 GOPS全球运维大会金牌讲师 国内首批DevOps Master 前百度资深敏捷教练 架构师 超过十四年敏捷转型 工程效能提升和大型项目管理实践经验
  • 电源篇 -- 降压电路(DCDC,非隔离)

    感谢阅读本文 在接下来很长的一段时间里 我将陆续分享项目实战经验 从电源 单片机 晶体管 驱动电路 显示电路 有线通讯 无线通信 传感器 原理图设计 PCB设计 软件设计 上位机等 给新手综合学习的平台 给老司机交流的平台 所有文章来源于项
  • 通过python实现局域网内传输大文件

    通过微信 网盘等进行传输速度很慢而且浪费流量 身旁又没有U盘等便携存储设备 那有没有一个方便的而且不用编程的局域网内传输的方式 那肯定有 step1 打开cmd cd进入需要分享的文件夹下 或者打开文件夹下 在当前路径下 打开cmd ste
  • Linux系统安装mysql

    1 卸载残留 如果服务器之前安装过mysql请先卸载 我这里是用yum安装的 现在通过yum去卸载 yum remove y mysql find name mysql 找到所有残留的文件 再通过rm rf去删除 2 卸载完成后 使用以下命
  • 乘积尾零

    如下的10行数据 每行有10个整数 请你求出它们的乘积的末尾有多少个零 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 7949 6113 5659 5245 7432 3051 443
  • R语言第七讲 线性回归分析案例

    题目 MASS 库中包含 Boston 波士顿房价 数据集 它记录了波士顿周围 506 个街区的 medv 房价中位数 我们将设法用 13 个预测变量如 rm 每栋住宅的平均房间数 age 平均房 龄 lstat 社会经济地位低的家庭所占比
  • 017-爬虫-爬虫结果存入 sqlserver

    先上图 结果 一 利用这个模块连接sql server import pymssql 引入pymssql模块 安装方式 conda install pymssql 二 连接失败的可能原因 参考此博客 需要开启几个服务 https blog