电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python如何爬取51cto數據并存入MySQL

瀏覽:3日期:2022-07-13 09:39:14

實驗環境

1.安裝Python 3.7

2.安裝requests, bs4,pymysql 模塊

實驗步驟1.安裝環境及模塊

可參考https://www.jb51.net/article/194104.htm

2.編寫代碼

# 51cto 博客頁面數據插入mysql數據庫# 導入模塊import reimport bs4import pymysqlimport requests# 連接數據庫賬號密碼db = pymysql.connect(host=’172.171.13.229’, user=’root’, passwd=’abc123’, db=’test’, port=3306, charset=’utf8’)# 獲取游標cursor = db.cursor()def open_url(url): # 連接模擬網頁訪問 headers = { ’user-agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ’ ’Chrome/57.0.2987.98 Safari/537.36’} res = requests.get(url, headers=headers) return res# 爬取網頁內容def find_text(res): soup = bs4.BeautifulSoup(res.text, ’html.parser’) # 博客名 titles = [] targets = soup.find_all('a', class_='tit') for each in targets: each = each.text.strip() if '置頂' in each: each = each.split(’ ’)[0] titles.append(each) # 閱讀量 reads = [] read1 = soup.find_all('p', class_='read fl on') read2 = soup.find_all('p', class_='read fl') for each in read1: reads.append(each.text) for each in read2: reads.append(each.text) # 評論數 comment = [] targets = soup.find_all('p', class_=’comment fl’) for each in targets: comment.append(each.text) # 收藏 collects = [] targets = soup.find_all('p', class_=’collect fl’) for each in targets: collects.append(each.text) # 發布時間 dates=[] targets = soup.find_all('a', class_=’time fl’) for each in targets: each = each.text.split(’:’)[1] dates.append(each) # 插入sql 語句 sql = '''insert into blog (blog_title,read_number,comment_number, collect, dates) values( ’%s’, ’%s’, ’%s’, ’%s’, ’%s’);''' # 替換頁面 xa0 for titles, reads, comment, collects, dates in zip(titles, reads, comment, collects, dates): reads = re.sub(’s’, ’’, reads) comment = re.sub(’s’, ’’, comment) collects = re.sub(’s’, ’’, collects) cursor.execute(sql % (titles, reads, comment, collects,dates)) db.commit() pass# 統計總頁數def find_depth(res): soup = bs4.BeautifulSoup(res.text, ’html.parser’) depth = soup.find(’li’, class_=’next’).previous_sibling.previous_sibling.text return int(depth)# 主函數def main(): host = 'https://blog.51cto.com/13760351' res = open_url(host) # 打開首頁鏈接 depth = find_depth(res) # 獲取總頁數 # 爬取其他頁面信息 for i in range(1, depth + 1): url = host + ’/p’ + str(i) # 完整鏈接 res = open_url(url) # 打開其他鏈接 find_text(res) # 爬取數據 # 關閉游標 cursor.close() # 關閉數據庫連接 db.close()if __name__ == ’__main__’: main()

3..MySQL創建對應的表

CREATE TABLE `blog` ( `row_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’主鍵’, `blog_title` varchar(52) DEFAULT NULL COMMENT ’博客標題’, `read_number` varchar(26) DEFAULT NULL COMMENT ’閱讀數量’, `comment_number` varchar(16) DEFAULT NULL COMMENT ’評論數量’, `collect` varchar(16) DEFAULT NULL COMMENT ’收藏數量’, `dates` varchar(16) DEFAULT NULL COMMENT ’發布日期’, PRIMARY KEY (`row_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

Python如何爬取51cto數據并存入MySQL

4.運行代碼,查看效果:

Python如何爬取51cto數據并存入MySQL

改進版:

改進內容:

1.數據庫里面的某些字段只保留數字即可

2.默認爬取的內容都是字符串,存放數據庫的某些字段,最好改為整型,方便后面數據庫操作

1.代碼如下:

import reimport bs4import pymysqlimport requests# 連接數據庫db = pymysql.connect(host=’172.171.13.229’, user=’root’, passwd=’abc123’, db=’test’, port=3306, charset=’utf8’)# 獲取游標cursor = db.cursor()def open_url(url): # 連接模擬網頁訪問 headers = { ’user-agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ’ ’Chrome/57.0.2987.98 Safari/537.36’} res = requests.get(url, headers=headers) return res# 爬取網頁內容def find_text(res): soup = bs4.BeautifulSoup(res.text, ’html.parser’) # 博客標題 titles = [] targets = soup.find_all('a', class_='tit') for each in targets: each = each.text.strip() if '置頂' in each: each = each.split(’ ’)[0] titles.append(each) # 閱讀量 reads = [] read1 = soup.find_all('p', class_='read fl on') read2 = soup.find_all('p', class_='read fl') for each in read1: reads.append(each.text) for each in read2: reads.append(each.text) # 評論數 comment = [] targets = soup.find_all('p', class_=’comment fl’) for each in targets: comment.append(each.text) # 收藏 collects = [] targets = soup.find_all('p', class_=’collect fl’) for each in targets: collects.append(each.text) # 發布時間 dates=[] targets = soup.find_all('a', class_=’time fl’) for each in targets: each = each.text.split(’:’)[1] dates.append(each) # 插入sql 語句 sql = '''insert into blogs (blog_title,read_number,comment_number, collect, dates) values( ’%s’, ’%s’, ’%s’, ’%s’, ’%s’);''' # 替換頁面 xa0 for titles, reads, comment, collects, dates in zip(titles, reads, comment, collects, dates): reads = re.sub(’s’, ’’, reads) reads=int(re.sub(’D’, '', reads)) #匹配數字,轉換為整型 comment = re.sub(’s’, ’’, comment) comment = int(re.sub(’D’, '', comment)) #匹配數字,轉換為整型 collects = re.sub(’s’, ’’, collects) collects = int(re.sub(’D’, '', collects)) #匹配數字,轉換為整型 dates = re.sub(’s’, ’’, dates) cursor.execute(sql % (titles, reads, comment, collects,dates)) db.commit() pass# 統計總頁數def find_depth(res): soup = bs4.BeautifulSoup(res.text, ’html.parser’) depth = soup.find(’li’, class_=’next’).previous_sibling.previous_sibling.text return int(depth)# 主函數def main(): host = 'https://blog.51cto.com/13760351' res = open_url(host) # 打開首頁鏈接 depth = find_depth(res) # 獲取總頁數 # 爬取其他頁面信息 for i in range(1, depth + 1): url = host + ’/p’ + str(i) # 完整鏈接 res = open_url(url) # 打開其他鏈接 find_text(res) # 爬取數據 # 關閉游標 cursor.close() # 關閉數據庫連接 db.close()#主程序入口if __name__ == ’__main__’: main()

2.創建對應表

CREATE TABLE `blogs` ( `row_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ’主鍵’, `blog_title` varchar(52) DEFAULT NULL COMMENT ’博客標題’, `read_number` int(26) DEFAULT NULL COMMENT ’閱讀數量’, `comment_number` int(16) DEFAULT NULL COMMENT ’評論數量’, `collect` int(16) DEFAULT NULL COMMENT ’收藏數量’, `dates` varchar(16) DEFAULT NULL COMMENT ’發布日期’, PRIMARY KEY (`row_id`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3.運行代碼,驗證

Python如何爬取51cto數據并存入MySQL

升級版

為了能讓小白就可以使用這個程序,可以把這個項目打包成exe格式的文件,讓其他人,使用電腦就可以運行代碼,這樣非常方便!

1.改進代碼:

#末尾修改為:if __name__ == ’__main__’: main() print('ntt所有數據已成功存放數據庫!!! n') time.sleep(5)

2.安裝打包模塊pyinstaller(cmd安裝)

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/

3.Python代碼打包

1.切換到需要打包代碼的路徑下面

2.在cmd窗口運行 pyinstaller -F test03.py (test03為項目名稱)

Python如何爬取51cto數據并存入MySQL

4.查看exe包

在打包后會出現dist目錄,打好包就在這個目錄里面

Python如何爬取51cto數據并存入MySQL

5.運行exe包,查看效果

Python如何爬取51cto數據并存入MySQL

檢查數據庫

Python如何爬取51cto數據并存入MySQL

總結:

1.這一篇博客,是在上一篇的基礎上改進的,步驟是先爬取首頁的信息,再爬取其他頁面信息,最后在改進細節,打包exe文件

2.我們爬取網頁數據大多數還是存放到數據庫的,所以這種方法很實用。

3.其實在此博客的基礎上還是可以改進的,重要的是掌握方法即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 超声波清洗机_超声波清洗机设备_超声波清洗机厂家_鼎泰恒胜 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 长城人品牌官网 | 网站制作优化_网站SEO推广解决方案-无锡首宸信息科技公司 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 必胜高考网_全国高考备考和志愿填报信息平台 | 冰晶石|碱性嫩黄闪蒸干燥机-有机垃圾烘干设备-草酸钙盘式干燥机-常州市宝康干燥 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | PCB厂|线路板厂|深圳线路板厂|软硬结合板厂|电路板生产厂家|线路板|深圳电路板厂家|铝基板厂家|深联电路-专业生产PCB研发制造 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 高压负荷开关-苏州雷尔沃电器有限公司 | 郑州律师咨询-郑州律师事务所_河南锦盾律师事务所 | 附着力促进剂-尼龙处理剂-PP处理剂-金属附着力处理剂-东莞市炅盛塑胶科技有限公司 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 不锈钢水箱厂家,不锈钢保温水箱-山东桑特供水设备 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 韦伯电梯有限公司 | 长沙广告公司|长沙广告制作设计|长沙led灯箱招牌制作找望城湖南锦蓝广告装饰工程有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 |