关于网络爬虫

使用pymysql模块完成登录注册

import pymysql  # 调用第三方pymysql模块

conn = pymysql.connect(
    host='127.0.0.1',  # ip地址
    port=3306,  # 端口号
    user='root',  # mysql 登录用户名
    password='123456',  # mysql 登录密码
    database='t3',  # 使用的database
    charset='utf8',  # 定义字符编码
    autocommit=True,  # 自动确认sql命令
)  # 自定义参数
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 行成游标对象


def login():  # 定义登录部分
    username = input('username>>>:').strip()  # 获取用户名
    password = input('password>>>:').strip()  # 获取密码
    if len(username) == 0 or len(password) == 0:  # 定义用户名和密码不能为空
        print('用户名或密码不能为空')  # 打印结果
        return
    sql = 'select * from userinfo where username=%s'  # sql命令 从 userinfo中找一个输入的username
    cursor.execute(sql, (username))  # 执行sql语句,并将避免了sql注入现象
    res = cursor.fetchall()  # 获取所有的数据库数据 列表套字典的形式

    if res:  # 如果用户名存在 进入校验密码步骤
        user_dict = res[0]  # 获取第一条列表中字典数据
        if str(user_dict.get('password')) == password:  # 从字典中获取的密码 如果等于用户输入的密码
            print('%s登录成功' % username)  # 打印登录成功
        else:
            print('用户名或者密码错误')  # 密码不匹配打因登录失败
    else:
        print('用户名不存在请先注册')  # 用户名如果不存在 打印请先注册


def register():
    username = input('username>>>:').strip()  # 获取用户名
    password = input('password>>>:').strip()  # 获取密码
    if len(username) == 0 or len(password) == 0:  # 定义用户名和密码不能为空
        print('用户名或密码不能为空')  # 打印结果
        return
    sql = 'select * from userinfo where username=%s'  # sql命令 从 userinfo中找一个输入的username
    cursor.execute(sql, (username))  # 执行sql语句,并将避免了sql注入现象
    res = cursor.fetchall()  # 获取所有的数据库数据 列表套字典的形式

    if res:
        print('用户名已存在')  # 如果用户名重复则打印用户已存在
    else:
        sql = 'insert into userinfo(username,password) values(%s,%s)'  # sql语句 从userinfo中插入 用户输入的username 和password
        cursor.execute(sql, (username, password))  # 执行sql语句 并将关键词username 和password传入 避免了sql 注入
        print('%s注册成功' % username)  # 打印用户注册成功


while True:
    func_dict = {'1': register, '2': login}  # 定义一个字典,1对应注册部分 2 对应登录部分
    print(""" 
      1.注册
      2.登录
    """)
    choice = input('请选择想要的功能').strip()  # 获取用户输入的序列号
    # 如果用户输入的是1 或者2  则获取到用户输入的内容 并执行1 或者2
    if choice in func_dict:
        func_name = func_dict.get(choice)
        func_name()
    else:
        print('请选择正确的序列号')  # 如果输入的不是1或者2 则打印内容
View Code

常见收集数据网站(免费类)

1.百度指数网址

百度搜索关键字的网站,有大量的用户搜索数据

 

 可以相对直观的看出一个事物被用户搜索的次数

2.新浪指数网址

关于新浪搜索热搜的数据收集网站

3.国家数据网站

能够获取关于一些国家公开展示的数据 但数据普遍滞后,更新会较慢

 

以及一些境外的数据网站,加载速度会较国内网站慢很多

4.世界银行

5.纳斯达克

6.联合国数据网

 # 这类国外网站大部分都是英文

常见收集数据网站(收费类)

1.艾瑞咨询 

可以为用户量身打造数据服务并提供研究报告等

2.埃森哲 (境外)

也是数据服务相关的内容网站

3.麦肯锡 (境外)

 

 第三方平台:

4.数据堂 (人工智能数据网站)

5.贵阳大数据 (功能较多,收费便宜)

 网络爬虫理论

1.首先什么是互联网?

互联网的本质就是多个计算机通过网络设备连接而成,就像一张网

2.互联网建立目的是什么?

互联网的核心价值就在于数据的共享和传递,否则只能用u盘/硬盘进行数据拷贝

上网就是在基于网络访问别人的计算机上的数据.

 3.什么是上网?

由用户端计算机发送请求给目标计算机,将目标计算机的数据下载到本地的过程

4.爬虫要做的是什么?

通过代码模拟网络请求获取需要的数据并解析数据,最后保存

 5.爬虫的价值

抓取互联网上的数据,为我所用,有了大量的数据,就如同有了一个数据银行一样,下一步做的就是如何将这些爬取的数据产品化,商业化。

 爬虫的分类

通用爬虫

其实我们日常使用的浏览器就是一个巨大的爬虫

以百度为例 百度就是去互联网爬取所有的数据,把你需要的数据并保存到自己的本地,用户再通过百度客户端获取到百度的信息

1.搜索引擎如何获取一个网站URL? 

(1).主动向搜索引擎提交网址
  网址收录 

(2).在其他网址设置网站外链(友情链接)

  彼此引流之外,可以让搜索引擎一次性把网站全部收入

(3).与DNS服务商合作(DNS即域名解析技术)
简便获取ip地址:ping URL -t

2.关于robots协议

通用爬虫并不是万物皆可爬需要遵循robots协议

协议内会指明可以爬取网页的部分

但是协议是双方的可以不用遵循

#通常大型网络爬虫会遵循

3.通用爬虫工作流程
爬取网页 存储数据 内容处理 提供检索及排名服务
排名:
1.PageRank值
根据网站的流量(点击、浏览、人气)统计
2.竞价排名
通过付费提升排名

聚焦爬虫

就是爬虫程序员写的针对指定内容的爬虫

网页组成

# 爬虫的工作就是模拟浏览器朝目标网站发送请求的过程,拿到的网页筛选相应的数据

网页展示的界面其实内部对应就是一堆HTML代码

 

 

爬虫程序就是对这一堆HTML代码做数据筛选,所以要先熟悉html代码基本组成

HTML:超文本标记语言(浏览器展示出来的界面都是由HTML组成的)

前端与后端

前端

   任何与用户直接接触的操作界面都可以称之为前端

  手机界面, 电脑界面, 汽车中控

HTML  网页骨架

css      网页样式

javascript   网页动态效果

后端 

   就是程序员写的一堆程序代码,普通用户一般无法接触

HTML基本组成

网页文件都是以.html结尾 这个文件可以用浏览器打开

 

HTML语法基本结构

<html>
        <head>书写的一般都是给浏览器看的</head>
        <body>书写的就是浏览器要展示给用户看的</body>
</html>

head内常见标签

  通过谷歌浏览器可以查看网页

1.title标签: 添加名字

 

 

 

 2.更改网络背景颜色 style标签

  3.link标签  引入外部css文件

 

 

 将写HTML 和css代码进行分离,更加精简

4.scrpit (js代码)动态标签

 

 

  mata 标签 定义网页原信息

body内常见标签

基本标签:

h1-h6(几级标题)

  

ubsi(下划线 加粗 删除线 斜体)

  p标签

  

  hr 水平分割线

  br 换行

  

  双标签(有头有尾)

<a></a>
单标签(自闭和)
<img/>

a 加入网络连接

    img添加图片地址

 

posted @ 2021-09-13 14:43  查无此人cxc  阅读(50)  评论(0编辑  收藏  举报