【数据采集】实验01-工作环境配置与基础编程

文章目录

  • 一、实验目的
  • 二、实验准备
  • 三、实验内容及要求
      • 1、Anaconda3下载及其环境配置
      • 2、PyCharm下载及其配置
      • 3、安装Google Chrome
      • 4、编码规范
      • 5、安装包
      • 6、网页基本结构(熟悉常用的标签)
      • 7、mysql安装及连接测试
      • 8、mysql创建表并新增数据
      • 9、安装redis并使用
      • 10、Linux平台配置运行环境
      • 11、主要商业爬虫的功能及其对比
  • 四、实验小结

一、实验目的

  • 1、掌握相关软件的安装及配置。
  • 2、掌握常用IDE的启动、配置与管理。
  • 3、掌握基本程序的编写。

二、实验准备

  • 1、PyCharm
  • 2、Anaconda3
  • 3、Chrome
  • 4、MySQL8.0 Navicat
  • 5、Redis
  • 6、第三方包

三、实验内容及要求

1、Anaconda3下载及其环境配置

(1)程序下载
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

(2)安装并配置虚拟环境
conda create --name Crawler python=3.10

(3)Anaconda conda 切换为清华源

# 命令行中直接使用以下命令
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes

2、PyCharm下载及其配置

(1)程序下载
https://www.jetbrains.com/pycharm/download/

(2)创建项目
https://www.cnblogs.com/yuxuefeng/articles/9235431.html

(3)使用虚拟环境Crawler的编译器
https://www.cnblogs.com/mengxiaoleng/p/11745897.html

(4)测试

 print(“hello world!”)

3、安装Google Chrome

4、编码规范

https://www.cnblogs.com/doraman/p/11623455.html
https://www.cnblogs.com/haishiniu123/p/7125677.html

5、安装包

conda install requests
conda install beautifulsoup4 lxml
conda install PyMySQL
conda install DBUtils
conda install redis

6、网页基本结构(熟悉常用的标签)

https://www.runoob.com/html/html-tutorial.html

7、mysql安装及连接测试

import pymysql
# 打开数据库连接         IP           USER    PASSWORD  DBNAME
#db = pymysql.connect("localhost", "root", "123456", "test")
db = pymysql.connect(host="localhost", user="root", password="123456", database="test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute()  方法执行 SQL 查询
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print("Database version : %s " % data)
cursor.close()

# 关闭数据库连接
db.close()

8、mysql创建表并新增数据

8.1创建数据库表

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "test")

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")


# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

cursor.close()
# 关闭数据库连接
db.close()

8.2 新增数据

import pymysql

# 打开数据库连接
db = pymysql.connect("localhost", "root", "123456", "test")

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
    # 执行sql语句
    cursor.execute(sql)

    # 提交到数据库执行
    db.commit()
except:
    # 如果发生错误则回滚
    db.rollback()

# 关闭数据库连接
db.close()

9、安装redis并使用

redis的安装(msi),不用设置密码

https://blog.csdn.net/weixin_44893902/article/details/123087435

https://github.com/tporadowski/redis/releases/download/v5.0.14.1/Redis-x64-5.0.14.1.msi

import redis    # 导入redis 模块

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.StrictRedis(connection_pool=pool)
r.sadd('urls_page_new', 'url1')#待爬取页
r.sadd('urls_page_new', 'url2')
r.sadd('urls_page_new', 'url3')
r.sadd('urls_page_new', 'url4')
res = r.smembers('urls_page_new')
print(res)
#   元素个数
print(r.scard('urls_page_new'))
#   随机删除:spop key
#print(r.spop('urls_page_new'))  # 打印删除的值
s = r.spop('urls_page_new')
res = r.smembers('urls_page_new')
print(res)
r.sadd('urls_page_old', s)#已经爬取页
res = r.smembers('urls_page_old')
print(res)
#查找某个元素在不在
print(r.sismember('urls_page_new','url1'))

#   查看所有的key:keys *
print(r.keys())
r.delete('urls_page_new')
r.delete('urls_page_old')

10、Linux平台配置运行环境

https://dblab.xmu.edu.cn/blog/3848/

11、主要商业爬虫的功能及其对比

以下是一些知名的商业爬虫软件:

  1. 八爪鱼:国内知名度极高的一款网络爬虫软件,以其易用性和丰富的功能著称,提供模板采集、智能采集以及云采集等多种模式,适用于不同行业和场景。

  2. 神箭手云爬虫:提供云服务的爬虫平台,支持用户通过云端配置和执行爬虫任务,具有分布式采集能力,便于大规模数据抓取。

  3. 火车采集器:功能强大的网页数据抓取工具,适用于各种规模的数据采集项目,尤其在处理复杂结构网页和大规模数据时表现出色。

  4. Scrapinghub:Scrapinghub提供了一系列爬虫服务,SpiderCloud用于构建和管理分布式爬虫,Portia 则是一个可视化爬虫工具,允许用户无需编码即可创建爬虫规则。

  5. Mozenda:Mozenda提供了一套完整的网页数据提取解决方案,用户可以通过其提供的可视化界面来设计爬虫流程。

  6. Diffbot:Diffbot提供API形式的爬虫服务,专注于结构化抽取网页数据,特别在处理新闻文章、产品详情和其他标准化数据方面有独特优势。

  7. Apify:Apify是一个基于云计算的爬虫服务平台,拥有可视化爬虫构造器和SDK以供开发者自定义爬虫逻辑。

这些商业爬虫软件通常提供了更为稳定的性能、更高级的功能支持,如反反爬机制、IP代理池管理、数据清洗和存储集成等功能,并且有专门的技术支持和服务团队协助解决使用过程中遇到的问题。

四、实验小结

1、爬虫的基本原理?
爬虫的基本原理是在遵循相关法律法规和网站规则的前提下,通过程序模拟用户浏览器发送HTTP请求访问网页,获取服务器返回的响应数据(如HTML、JSON等),并进一步解析这些数据以提取有价值的信息,可用于数据分析、存储或其他用途。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/547891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【讲解下如何从零基础学习Java】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

pyqt实战-软件通用界面设计模板样例

软件界面 技术点 无边框设计自定义右上角最大化,最小化,关闭按钮界面布局能够自适应界面的放大缩小按住鼠标左键能够拖动整个界面treewidget整体风格设计 代码 import sysfrom PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.Qt import * impor…

c# 服务创建

服务 创建服务 编写服务 可以对server1.cs重新命名,点击你的server按F7进入代码编辑模式,编写脚本 双击你的server.cs右击空白位置,添加安装程序,此时会生成“serviceInstaller1”及“serviceProcessInstaller1” 后续可以点击P…

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition

开源相机管理库Aravis例程学习(一)——单帧采集single-acquisition 简介源码函数说明arv_camera_newarv_camera_acquisitionarv_camera_get_model_namearv_buffer_get_image_widtharv_buffer_get_image_height 简介 本文针对官方例程中的第一个例程&…

CSS特效---跳动的文字

1、演示 2、一切尽在代码中 <!--* Author: your name* Date: 2023-10-03 14:42:44* LastEditTime: 2023-10-03 14:56:26* LastEditors: DESKTOP-536UVPC* Description: In User Settings Edit* FilePath: \css-special-effects\跳动的文字.html --> <!DOCTYPE html>…

【Linux】进程的优先级环境变量

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 进程的优先级2.1 什么是优先级2.2 为什么要有优先级2.3 优先级的查看方式2.4 对优先级调整 3. 命令行参数4. 环境变量4.1 环境变量与配置文件4.1.1 环境变量初步介绍4.1.2 配置文件 4.2 更多环境变量4.3 整…

Shiro整合EhCache缓存(二)

Shiro整合EhCache缓存 1、授权、角色认证1.1、后端接口服务注解1.2、授权-获取角色1.3、授权-获取权限1.4、授权-异常处理1.5、前端页面授权 2、EhCache2.1、Shiro整合EhCache 1、授权、角色认证 用户登录后&#xff0c;需要验证是否具有指定角色指定权限。Shiro也提供了方便的…

企业网络日益突出的难题与SD-WAN解决方案

随着企业规模的迅速扩张和数字化转型的深入推进&#xff0c;企业在全球范围内需要实现总部、分支机构、门店、数据中心、云等地点的网络互联、数据传输和应用加速。SD-WAN作为当今主流解决方案&#xff0c;在网络效率、传输质量、灵活性和成本等方面远远超越传统的互联网、专线…

归并排序详解(附代码)

归并排序 数据科学家每天都在处理算法。 然而&#xff0c;数据科学学科作为一个整体已经发展成为一个不涉及复杂算法实现的角色。 尽管如此&#xff0c;从业者仍然可以从建立对算法的理解和知识库中受益。 在本文中&#xff0c;对排序算法归并排序进行了介绍、解释、评估和实…

高温超导量子干涉仪更具实用价值 政策推动行业研制能力提升

高温超导量子干涉仪更具实用价值 政策推动行业研制能力提升 高温超导量子干涉仪&#xff0c;一种采用临界温度在77K以上高温超导材料制造而成的可对磁场微小变化进行测量的仪器&#xff0c;需要工作在液氮环境中。 超导量子干涉仪&#xff08;SQUID&#xff09;&#xff0c;一种…

面试官:为什么忘记密码要重置而不是告诉你原密码?

这是一个挺有意思的面试题,挺简单的,不知道大家平时在重置密码的时候有没有想过这个问题。回答这个问题其实就一句话:因为服务端也不知道你的原密码是什么。如果知道的话,那就是严重的安全风险问题了。 我们这里来简单分析一下。 做过开发的应该都知道,服务端在保存密码到…

CPLD可运行的最高频率是多少

CPLD可运行的最高频率是多少 AG32 内置CPLD的可运行最高频率 AG32 内置CPLD的可运行最高频率 AG32 MCU 的运行最高频率是248M。而CPLD中没有标准的最高频率。 最大能跑多少MHz&#xff0c;取决于cpld 里的设计。 如果是逻辑电路&#xff0c;则不存在时钟的概念。 如果是时序电路…

在vue和 js 、ts 数据中使用 vue-i18n,切换语言环境时,标签文本实时变化

我的项目需要显示两种语言(中文和英文)&#xff0c;并且我想要切换语言时&#xff0c;页面语言环境会随之改变&#xff0c;目前发现&#xff0c;只能在vue中使用$t(‘’)的方式使用&#xff0c;但是这种方式只能在vue中使用&#xff0c;而我的菜单文件是定义在js中&#xff0c;…

直流充电桩与交流充电桩有哪些区别,如何选最靠谱?

在当今快速发展的电动汽车市场&#xff0c;正确选择充电桩成为了车主们面临的重要问题之一。直流充电桩与交流充电桩区到底有什么区别&#xff1f;哪些方面不同&#xff1f;分别适用场景是什么&#xff1f;不同场景应该怎么选&#xff1f;本文一文为您详解。 一、直流充电桩与交…

ObjectMapper的具体介绍与使用

文章目录 声明一、前言二、ObjectMapper与JSONObject比较1、核心主要有三个部分&#xff1a;依赖包不同 2、ObjectMapper使用概述2.1、工程的pom.xml导包信息2.2、创建案例中的测试对象2.3、对象和JSON相互转化2.3.1、测试代码2.3.2、测试结果展示 2.4、集合和JSON像话转化2.4.…

【让自己的U盘变得与众不同】

文章目录 今日座右铭&#xff1a;在心里种花&#xff0c;人生才不会荒芜。 文章目录 文章目录前言一、准备ICO图标二、插入U盘1.点击新建文本文档-输入代码-点击保存2.将代码文本文档名称修改为autorun.inf在这里插入图片描述3.将图标及代码文本文档放入U盘中在这里插入图片描述…

深度残差收缩网络中,使用 Sigmoid 函数的用意在哪?

在深度残差收缩网络中&#xff0c;使用 Sigmoid 函数将输出归一化到 0 和 1 之间的目的是为了限制输出值的范围&#xff0c;并且使得输出可以被解释为概率。这个 Sigmoid 函数的输出可以被看作是一个置信度或者概率的度量&#xff0c;表示某个事件发生的可能性。 在设置阈值时…

财富池指标--通达信主力建仓免费指标公式源码

主力交易一只个股&#xff0c;一般会经过以下几个阶段&#xff1a;建仓、拉升、出货。那么&#xff0c;怎么判断一只股票正处于主力建仓时期呢&#xff1f; 1、从k线图上来看 个股走势图中&#xff0c;连续出现小阳线的k线图&#xff0c;其成交量持续放量&#xff0c;或者在个…

【学习笔记】rt-thread

任务 创建好任务&#xff0c;不管是动态还是静态创建&#xff0c;任务的状态是init &#xff0c;通过start方法来启动任务&#xff1b;线程大小 设置小了&#xff0c;无法正常工作&#xff1f;显示占空间100% 启动过程 TODO 这是编译器特性&#xff1f; 因为RT-Thread使用编…

【QT+QGIS跨平台编译】181:【QGIS+Qt跨平台编译】—【错误处理:找不到_DEBUGA】

点击查看专栏目录 文章目录 一、找不到_DEBUGA二、原因分析三、错误处理 一、找不到_DEBUGA 报错信息&#xff1a; 二、原因分析 采用了非UNICODE&#xff1a; DEFINES - UNICODE没法识别 _DEBUGA 但可以识别 _DEBUG 三、错误处理 修改 _DEBUGA 为 _DEBUG
最新文章