利用Python爬虫网站数据直接导入mysql数据库中

说明:可能经常出现要爬取某个网站的数据,这时候需要利用爬虫技术来完成,这块主要使用Python来实现。

如何搭建Python环境我上节文章有详细描述:https://blog.csdn.net/Joe192/article/details/94722117

(1)导入包

import requests
from bs4 import BeautifulSoup
import re
import pymysql


beautifulsoup是python的一个HTML解析库,可以用它来方便地从网页中提取数据。

(2)发送请求并打印状态码

url = 'https://docs.microsoft.com/zh-cn/sql/mdx/mdx-function-reference-mdx?view=sql-server-2017'
res = requests.get(url)
res.encoding='utf-8'
print(res.status_code)

encoding='utf-8' 里面处理中文乱码

(3)分析网页发现所要的数据在标签中

利用Python爬虫网站数据直接导入mysql数据库中_第1张图片

通过beautifulsoup查找到所有的函数以及描述数据

(4)通过正则表达式取出需要的数据

#re匹配需要的数据
pertern = re.compile(r'(.*?).*?.*?(.*?).*?',
    re.S)

生成正则模式

data = str(data)
item = re.findall(pertern, data)

对data进行强制类型转换(转为字符串)

匹配出数据

利用Python爬虫网站数据直接导入mysql数据库中_第2张图片

(5)存入数据库

def create():
    db = pymysql.connect("localhost", "root", "root", "test")#连接数据库 
 
    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS FUN_TEST")
 
    sql = """CREATE TABLE FUN_TEST (
            ID INT PRIMARY KEY AUTO_INCREMENT,
            NAME CHAR(20),
            DESCRIBE1 CHAR(255))"""
 
    cursor.execute(sql)
 
    db.close()
 
def insert(value):
    db = pymysql.connect("localhost", "root", "root", "test")
 
    cursor = db.cursor()
    sql = "INSERT INTO FUN_TEST(NAME,DESCRIBE1) VALUES (%s, %s)"
    try:
        cursor.execute(sql,value)
        db.commit()
        print('插入数据成功')
    except:
        db.rollback()
        print("插入数据失败")
    db.close()
 
create()  #创建表

首先创建表,如果存在相同名字的表,则删除;再创建表。

插入数据。

利用Python爬虫网站数据直接导入mysql数据库中_第3张图片

(6)源码

import requests
from bs4 import BeautifulSoup
import re
import pymysql
 
def create():
    db = pymysql.connect("localhost", "root", "root", "test")#连接数据库 
 
    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS FUN_TEST")
 
    sql = """CREATE TABLE FUN_TEST (
            ID INT PRIMARY KEY AUTO_INCREMENT,
            NAME CHAR(20),
            DESCRIBE1 CHAR(255))"""
 
    cursor.execute(sql)
 
    db.close()
 
def insert(value):
    db = pymysql.connect("localhost", "root", "root", "test")
 
    cursor = db.cursor()
    sql = "INSERT INTO FUN_TEST(NAME,DESCRIBE1) VALUES (%s, %s)"
    try:
        cursor.execute(sql,value)
        db.commit()
        print('插入数据成功')
    except:
        db.rollback()
        print("插入数据失败")
    db.close()
 
create()  #创建表
 
#re匹配需要的数据
pertern = re.compile(r'(.*?).*?.*?(.*?).*?',
    re.S)
url = 'https://docs.microsoft.com/zh-cn/sql/mdx/mdx-function-reference-mdx?view=sql-server-2017'
res = requests.get(url)
res.encoding='utf-8'
print(res.status_code)
soup = BeautifulSoup(res.text, 'html.parser')
data = soup.find_all('tbody')
data = str(data)
item = re.findall(pertern, data)
for i in item:
    print(i)
    insert(i)

参考网站:

https://blog.csdn.net/Air_RA/article/details/85225712#commentsedit

https://www.cnblogs.com/sheng-247/p/7686014.html

你可能感兴趣的:(Python)