ESTA软件方向第二次培训

JDBC&爬虫入门

一、JDBC

1、什么是JDBC

Java DataBase Connectivity,一种用于执行SQL语句的Java API

这次培训只演示Java执行mysql语句

2、首先了解一些mysql指令

(1)创建数据库

create database esta;//esta是数据库名

(2)删除数据库

drop database esta;

(3)使用该数据库

use esta;

(4)显示数据库中的表

show tables;

(5)删除表

drop table student;//student是表名

(6)创建表

create table student(

id int auto_increment primary key,//自动加编号的主键

name varchar(50),        //varchar表示可变长度,存入数据是几个字节大小就占用几个字节大小,但超过设置的值时会被截断

sex char(20),          //char(T)表示不可变长度,每个值都占用T个字节,如果长度小于T,mysql就会在它的右边以空格字符补足.

birthday varchar(50)

)default charset=utf8;   //设置默认编码为utf-8

(7)插入数据

insert into student values(null,esta,‘女’,2000-10-2);

(8)查询表中的数据

select * from student;//*表示选择所有

select id,name from student;//表示只选取idname两列

(9)修改某一条数据

update student set sex='' where id=1;//将主键为1的数据中的sex改为''

(10)删除数据

delete from student where id=1;//删除主键为1的这条记录

3、尝试使用命令行执行mysql指令

(1)打开上次培训时安装的xampp

2)开启mysql服务(点击mysql对应的start

3)点击shell打开命令行

4)输入命令:mysql -u root -p回车之后会让你输入密码,如果没有密码的话直接回车即可

5)现在就可以开始运行2中的mysql命令了,实践一波。

4、Java代码来替代命令行中对mysql的操作

1)、开启数据库

先进行3中的(1)与(2)步,将数据库服务打开。

2)、下载并解压jar

官方下载链接:https://dev.mysql.com/downloads/connector/j/


3)、导入jar包
在工程中导入jar包:新建工程- > 右击工程名-> 构建路径-> 添加外部归档-> 选择(2)中解压得到的.jar文件

                

(4)、编写代码
package ESTA;
import java.sql.*;

import com.mysql.jdbc.PreparedStatement;

public class esta_conncet {
	
	public static void main(String[] args){
		//连接对象
		Connection conn;
		//驱动
		String driver = "com.mysql.jdbc.Driver";
		//jdbc:mysql://localhost:3306/esta 为数据库eata的地址
		//?useUnicode=true&characterEncoding=utf8加上这个防止汉字乱码
		String addr = "jdbc:mysql://localhost:3306/esta?useUnicode=true&characterEncoding=utf8";
		//用户名
		String username ="root";
		//密码
		String password = "";
		try{
			//加载驱动
			Class.forName(driver);
			
			//建立连接
			conn = DriverManager.getConnection(addr, username, password);
			//判断是否连接
			if(!conn.isClosed()){
				System.out.println("连接成功");
			}
			
		
		
			Statement state = conn.createStatement();
			//创建表,sql为在数据库中创建表的命令语句,与2中的语句完全相同,不过因为字符串过长,用+连接
			String sql = "create table student("
					+"id int auto_increment primary key,"
					+"name varchar(50),"
					+"sex varchar(20),"
					+"birthday varchar(30)"
					+")default charset=utf8;";
			//state.executeLargeUpdate()方法用于运行mysql命令,如果成功即返回0
			if(state.executeLargeUpdate(sql)==0){
				System.out.println("创建成功");
			}
			//到这里为止,就已经在名为esta的数据库中创建了一个名为student的表
			//上面创建表时使用Statement对象来操作数据库,但Statement实现传参较为麻烦
			//并且速度效率和安全方面也不及Preparedstatement,
			//初学测试的时候可以用statement,但是以后使用尽量用PrepareStatement
			//Preparedstatement利用?(占位符)传参,下面插入数据使用Preparedstatement演示
			//PreparedStatement.setString(int arg0, String arg1)用于将占位符补齐,从而实现传参
			//arg0表示占位符的索引,表示要将占位符替换掉的参数
			String name = "esta";
			String sex = "male";
			String birthday = "2000";
			PreparedStatement pst = (PreparedStatement) conn.prepareStatement("insert into student values(null,?,?,?);");//获得一个PreparedStatement对象,并传入sql语句
			pst.setString(1, name);//占位符索引从1开始,用name替换第一个占位符
			pst.setString(2, sex);//用sex替换第二个占位符
			pst.setString(3, birthday);//用birthday替换第三个占位符
			pst.executeUpdate();//执行语句
			//到这里为止,就在student表中插入了一组数据(记录),尝试从从表中将这组数据提取出来
			//下面这个语句也与2中的插入语句一样
			//相信你们看到这里,已经知道jdbc事实上就是用Java来执行sql的命令,命令一模一样
			String sql_1 = "select * from student";//这条命令表示获取student表中的所有记录
			ResultSet rs = state.executeQuery(sql_1);//执行上面的命令,并将结果存入一个结果集中
			while(rs.next()){                         //遍历所有记录
				
				System.out.print(rs.getInt("id")+"   ");
				System.out.print(rs.getString("name")+"   ");
				System.out.print(rs.getString("sex")+"   ");
				System.out.println(rs.getString("birthday"));
				
			}
			pst.close();//使用完数据库一定要记得关闭连接
			state.close();
			conn.close();
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		
		
		
	}

}
上面的代码实现了在数据库中创建一个表,在表中插入一组数据并从数据库中提取输出这组数据。但是Java可以对数据库进行的操作还有很多,比如更新一组数据、删除一张表等。实际操作起来也是像上面代码中那样用Java来执行mysql命令,所以只要熟练掌握了mysql的命令,那么用Java来操作数据库将是一件非常简单的事,多实践即可。


二、爬虫入门

1、安装pythonpycharm

python下载地址:https://www.python.org/ftp/python/3.6.5/python-3.6.5.exe

安装时勾选 Add Python 3.6 to PATH


Pycharm下载地址:https://www.jetbrains.com/pycharm/download/#section=windows

2、打开pycharm新建工程

3、导入相关库

requests库用于爬取  beautifulsoup用于解析

可以开启cmd,输入pip install [名称]下载导入  如:pip install requests

也可以在pycharm中点击File -> Setting ->Project:[工程名] -> Project Interpreter -> +号


搜索需要的库


点击 Install Package

 4、获取必要的一些东西

尝试爬取河海大学官网主页面源代码,在写代码前,应该先观察一下要爬取网站的结构,打开要爬取的网站,快捷键Fn+F12(或win+F12)打开查看审查元素工具,点击Network


按F5刷新页面

点击Name这一列的第一个


在这里可以看到浏览器对网站进行访问时的headers,也就是浏览器的头,有了这个,网站服务器会在一定程度上把你的爬虫当成是浏览器。


拷贝Request Headers。

5、编写代码

右击pycharm中已建立的工程的Scripts文件夹,点击New ——> Python File ——>输入文件名,确定

import requests
from bs4 import BeautifulSoup

class spider(object):#创建一个spider类
    def __init__(self):#相当于Java中的构造函数
        self.headers = {      #浏览器头,就是刚刚拷贝下来的,以键值对形式规范好,与Java中的map相似,在python中成为字典
            "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
            "Accept-Encoding":"gzip, deflate",
            "Accept-Language":"zh-CN,zh;q=0.9",
            "Cache-Control":"max-age=0",
            "Connection":"keep-alive",
            "Host":"www.hhu.edu.cn",
            "Upgrade-Insecure-Requests":"1",
            "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36"
        }

    def get_html(self,url):#创建一个爬起函数
        html = requests.get(url,headers=self.headers).text#爬取
        print(html)

if __name__ == '__main__':
    spider = spider().get_html("http://www.hhu.edu.cn/")

因为时间关系,只是将获取到的html源代码输出了,没有演示BeautifulSoup的解析效果,ppt中提到的利用selenium实现自动登录的代码也没有演示,大家如果有兴趣的话可以随时找我们交流 [email protected]

猜你喜欢

转载自blog.csdn.net/travel_capsule/article/details/79791633