200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 利用Python爬虫网站数据直接导入mysql数据库中

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

时间:2020-10-30 02:05:26

相关推荐

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

说明:

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

如何搭建Python环境我上节文章有详细描述:使用Python3.7实现爬虫技术,获取自己想要的网站数据_学无耻境的博客-CSDN博客_python爬虫技术抓取网站数据

(1)导入包

import requestsfrom bs4 import BeautifulSoupimport reimport pymysql

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

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

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

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

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

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

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

#re匹配需要的数据pertern = pile(r'<a.*?><span data-stu-id="d5ccf-.*?">(.*?)</span>.*?</a>.*?<td><span data-ttu-id="d5ccf-.*?">(.*?)</span>.*?</td>',re.S)

生成正则模式

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

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

匹配出数据

(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)mit()print('插入数据成功')except:db.rollback()print("插入数据失败")db.close()create() #创建表

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

插入数据。

(6)源码

#!/usr/bin/python3import requestsfrom bs4 import BeautifulSoupimport reimport pymysqldef create():db = pymysql.connect(host='localhost',user='root',password='root',database='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(host='localhost',user='root',password='root',database='test')cursor = db.cursor()sql = "INSERT INTO FUN_TEST(NAME,DESCRIBE1) VALUES (%s, %s)"try:cursor.execute(sql,value)mit()print('插入数据成功')except:db.rollback()print("插入数据失败")db.close()create() #创建表#re匹配需要的数据pertern = pile(r'<a data-linktype="relative-path" href=".*?">(.*?)</a>.*?<td>(.*?)</td>',re.S)url = '/zh-cn/sql/mdx/mdx-function-reference-mdx?view=sql-server-'res = requests.get(url)res.encoding='utf-8'print(res.status_code)soup = BeautifulSoup(res.text, 'html.parser')data = soup.find_all('tbody')print(data)data = str(data)item = re.findall(pertern, data)print(item)for i in item:print(i)insert(i)

参考网站:

/Air_RA/article/details/85225712#commentsedit

Python模块Requests的中文乱码问题 - ShengLeQi - 博客园

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。