import pymssql #引入pymssql模块
import sys
from bs4 import BeautifulSoup  # 网页解析,获取数据
import re  # 正则表达式,进行文字匹配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作def conn():connect = pymssql.connect('(local)', 'ouou', '123456', 'MyRetile') #服务器名,账户,密码,数据库名if connect:print("连接成功!")return connectdef main():baseurl = "https://movie.douban.com/top250?start="init_sql()# 1.爬取网页datalist = getData(baseurl)savepath = r'.\\douban250.xls'# 3.保存数据# saveData(savepath,datalist)saveDataSql(datalist)def init_sql():sql = '''create table movie250(id integer identity(1,1) primary key,info_link text not null,pic_link text not null,cname varchar(80),ename varchar(80),score numeric,rated numeric,introduction text,info text);'''conn = pymssql.connect('(local)', 'ouou', '123456', 'MyRetile',autocommit=True)cursor = conn.cursor()cursor.execute(sql)conn.commit()conn.close()def saveDataSql(datalist):thisconn = conn()cur = thisconn .cursor()for data in datalist:for index in range(len(data)):data[index] = data[index].replace("'", "''")data[index] = '\'' + data[index] + '\''sql = '''insert into movie250(info_link,pic_link,cname,ename,score,rated,introduction,info)values(%s)''' % ','.join(data)print(sql)cur.execute(sql)thisconn.commit()cur.close()thisconn.close()# 创建正则表达式对象,表示规则(字符串的模式)re.S 忽视换行符
# 1 影片详情链接的规则
findLink = re.compile(r'<a href="(.*?)">')
# 2 影片图片
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)
# 3 影片片名
findTitle = re.compile(r'<span class="title">(.*)</span>')
# 4 影片评分
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 5 找到评价人数
findJudge = re.compile(r'<span>(\d*)人评价</span>')
# 6 找到概况
findInq = re.compile(r'<span class="inq">(.*)</span>')
# 7 找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)cnt = 0# 爬取网页
def getData(baseurl):global cntdatalist = []for i in range(0, 10):url = baseurl + str(i * 25)html = askURL(url)  # 保存获取到的网页源码# 2.逐一解析数据soup = BeautifulSoup(html, "html.parser")for item in soup.find_all('div', class_='item'):  # 查找符合要求的字符串,形成列表# print(item)data = []item = str(item)link = re.findall(findLink, item)[0]data.append(link)  # 添加连接imgSrc = re.findall(findImgSrc, item)[0]data.append(imgSrc)  # 添加图片titles = re.findall(findTitle, item)  # 片名可能只有一个中文名,没有外国名if (len(titles) == 2):ctitle = titles[0]  # 添加中文名data.append(ctitle)otitle = titles[1].replace("/", "")  # 去掉无关的符号data.append(otitle)  # 添加外文名else:data.append(titles[0])data.append(' ')rating = re.findall(findRating, item)[0]data.append(rating)  # 添加图片judgeNum = re.findall(findJudge, item)[0]data.append(judgeNum)  # 添加评价人数inq = re.findall(findInq, item)if len(inq) != 0:inq = inq[0].replace("。", "")  # 去掉句号data.append(inq)  # 添加概述else:data.append(" ")bd = re.findall(findBd, item)[0]bd = re.sub('<br(\s+)?/>(\s+)', " ", bd)  # 去掉<br/>bd = re.sub('/', ' ', bd)  # 替换/data.append(bd.strip())datalist.append(data)  # 把处理好的一部电影信息放入datalist# cnt+=1# print(str(cnt)+'.'+str(link))# print(datalist)return datalist# 得到指定一个URL的网页内容
def askURL(url):head = {  # 模拟浏览器头部信息,向豆瓣服务器发送消息,下面一定不能写错!'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36'}# 用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容)request = urllib.request.Request(url=url, headers=head)html = ''try:response = urllib.request.urlopen(request)html = response.read().decode("utf-8")# print(html)except urllib.error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)return html# 保存数据
def saveData(savepath, datalist):# 创建workbook对象workbook = xlwt.Workbook(encoding="utf-8")# 创建工作表worksheet = workbook.add_sheet('sheet1')for i in range(0, 250):for j in range(0, 8):worksheet.write(i, j, datalist[i][j])workbook.save(savepath)if __name__ == '__main__':main()

Python 爬虫学习08 将爬取到的数据保存到SQL相关推荐

  1. python爬虫学习 之 定向爬取 淘宝商品价格

    python爬虫学习 之 定向爬取 淘宝商品价格 import requests import redef getHTMLText(url):try:r = requests.get(url, tim ...

  2. mysql 查询 系统字段 自然日_吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB...

    本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...

  3. Python爬虫学习,批量爬取下载抖音视频

    这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙 项目源码展示 ''' 注:如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料, ...

  4. python爬取web漫画网站_[Python爬虫学习]利用selenuim爬取漫画网站

    注意事项 版本 Python版本为 Python-3.8.3 系统为 Windows10 浏览器为 Firefox-77.0 前置 \(selenium\) \(BeautifulSoup\) \(r ...

  5. Python爬虫学习---------使用beautifulSoup4爬取名言网

    爬取名言网top10标签对应的名言,并存储到mysql中,字段(名言,作者,标签) #! /usr/bin/python3 # -*- coding:utf-8 -*-from urllib.requ ...

  6. 【Python】学习笔记 #1 —— 爬取网页筛选数据全过程

    目录 Step 1:下载requests包 Step 2:导包 Step 3:requests使用 Step 4:Re的使用 Step 5:os的使用 Step 6:保存文件 Step 7:综合案例 ...

  7. python爬虫: 爬取boss网站数据 保存到mysql

    爬取boss数据并保存到mysql boss的反爬虫控制尤其恶心 cookies大概用3次左右就不能用了 所以爬取不了太多东西 只可用来学习 等学习完逆向爬虫课程 再来挑战挑战 example.py ...

  8. python爬虫-----学习bs,爬取丁香园特定帖子的所有回复内容

    beautifsoup----爬虫数据挖掘又一大利器 – 安装: conda install beautifulsoup4 或者 pip install beautifulsoup4(这个4代表着bs ...

  9. Python爬虫学习---------根据分类爬取豆瓣电影的电影信息

    代码的入口: if __name__ == '__main__': main() #! /usr/bin/python3 # -*- coding:utf-8 -*- # author:Sirius. ...

最新文章

  1. R语言为dataframe添加新的数据列(add new columns):使用R原生方法、data.table、dplyr等方案
  2. python中高阶函数改写学生信息管理程序_python利用高阶函数实现剪枝函数
  3. getsockname与getpeername
  4. IDEA将项目打包为指定class文件的jar
  5. OllyDBG完美教程(超强入门级)
  6. 解决Spring Boot启动项目Tomcat不能访问80端口的问题
  7. sql语句select group by order by where一般先后顺序
  8. C语言枚举类 口袋中有红、黄、蓝、白、黑5种颜色的球若干个
  9. java日常基础知识
  10. 源支付3.1版本全开源版+店员监控软件+手机监控APP源码
  11. tecplot 通过数据点、坐标点绘制云图、三维云图
  12. echarts-gl 使用出现错误
  13. Tita OKR:掌握大局的仪表盘
  14. 如何理解数据科学的中的数据泄露(Data Leakage)
  15. A. The Fair Nut and the Best Path(无根树dp详解)
  16. Python制作简易计算器(GUI)---Tkinter
  17. STM32F103,SPI------FLASH
  18. 华为 android 菜单键,华为手机怎么设置导航栏?华为手机自定义导航栏教程
  19. python No dq3d python package, filterreg deformation model not available.
  20. 基于Python语言和PyQt5的铁路列车运行图系统

热门文章

  1. 3D人脸重建之DECA
  2. Android studio 解决libpng warning: iCCP: Not recogni
  3. linux 查看1521端口状态,linux防火墙开放1521端口
  4. Unity3d入门到如土
  5. 看我怎么把别人的女朋友搞到手的(四)
  6. Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)(转载)
  7. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 1-8
  8. 华为路由器之ftp配置
  9. 一条指令在cpu中的执行流程(理解CPU组成)
  10. The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook