第一關:爬蟲小白的進階之路
前言
歡迎來和我們一起探究Python的奧妙窘面。
本次課程共分為三天政冻,你將學到爬蟲基礎知識、代碼優(yōu)化蹬耘、數(shù)據(jù)的存儲.....
老師會手把手帶你實操寫代碼剥啤,一起感受python給我們的生活和工作帶來的高效
開始學習前老師還有個小tips:將學習界面添加到收藏夾何暮,學習更便捷??
OK~一切準備就緒,let's go??????
初識python爬蟲
- 什么是爬蟲铐殃?
爬取網(wǎng)絡數(shù)據(jù)的蟲子(Python程序) - 爬蟲實質(zhì)是什么呢海洼?
模擬瀏覽器的工作原理,向服務器請求相應的數(shù)據(jù) -
瀏覽器的工作原理
瀏覽器在這個過程中還起到了翻譯數(shù)據(jù)的作用哦
爬蟲的工作原理如下圖:
數(shù)據(jù)背后的秘密
找不到這雙鞋子的銷售數(shù)據(jù)怎么辦富腊?
- 曲線救國坏逢,通過評論數(shù)據(jù)間接得到鞋子的銷售數(shù)據(jù)
如何找到評論區(qū)內(nèi)容背后的URL?
(1)鼠標右擊選擇檢查,打開程序員調(diào)試窗口是整,點擊network(網(wǎng)絡)
(2)刷新當前頁面
(3)復制一小段評論區(qū)內(nèi)容肖揣,然后在程序員調(diào)試窗口點擊放大鏡??,粘貼
(4)點擊刷新小圓圈??查找
(5)點擊查詢結果的第二行浮入,跳轉(zhuǎn)到對應的請求
(6)點擊Headers龙优,找到Request URL即幾評論區(qū)數(shù)據(jù)背后的URL
3行代碼爬取京東數(shù)據(jù)
梳理代碼流程:
(1)引入Python工具包requests
(2)使用工具包中的get方法,向服務器發(fā)起請求
(3)打印輸出請求回來的數(shù)據(jù)(print語法)
import requests as rq
import json
resp= rq.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100019039124&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
print(resp.text)
牛刀小試1
爬取一頁京東上銷量最高的口紅評論區(qū)數(shù)據(jù)
import requests as rq
import json
resp= rq.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100011323932&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
print(resp.text)
第二關:python高手過招
Python代碼解析數(shù)據(jù)
如何解析這堆雜亂無章的數(shù)據(jù)?
- (1)打開網(wǎng)頁工具 www.json.cn
- (2)將數(shù)據(jù)整理成Json格式:以大括號開頭和結尾
- (3)找到目標數(shù)據(jù)值對應的名字
Python replace語法
replace為替換的意思事秀,可以使用replace把任何不想要的數(shù)據(jù)替換成一個新值
引入Python整理數(shù)據(jù)的工具包 json彤断、獲取鞋子顏色及鞋碼數(shù)據(jù)
import requests as rq
import json
resp= rq.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100019039124&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
content =resp.text
rest=content.replace("fetchJSON_comment98(",'').replace(");",'')
json_data= json.loads(rest)
comments =json_data["comments"]
for item in comments:
color =item["productColor"]
size=item["productSize"]
print(color)
print(size)
怎么樣?自己爬到數(shù)據(jù)的感覺有沒有很奇妙??
牛刀小試2
利用for循環(huán)寫一段代碼易迹,爬取評論中口紅的色號數(shù)據(jù)
import requests
import json
resp =requests.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100011323932&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
content =resp.text
rest=content.replace('fetchJSON_comment98(','').replace(');','')
json_data=json.loads(rest)
comments=json_data['comments']
for item in comments:
color =item['productColor']
print(color)
第三關:化身數(shù)據(jù)分析師
學會引入openpyxl工具包存儲數(shù)據(jù)宰衙?
(1)創(chuàng)建一個Excel表格
(2)創(chuàng)建一個sheet
(3)在sheet里面保存數(shù)據(jù)
(4)把表格保存在一個磁盤里
import openpyxl
wb =openpyxl.Workbook()
sheet1=wb.create_sheet()
sheet1.append(['aaa','bbb'])
wb.save('data/123_ABC_CDE.xlsx')
注意??:我們的數(shù)據(jù)保存在云服務器,服務器訪問入口:http://py.xxx.com/pythondata
體驗數(shù)據(jù)可視化分析
使用之前爬取的數(shù)據(jù)存儲為CSV文件睹欲,然后進行可視化分析
import requests as rq
import json
import openpyxl
wb =openpyxl.Workbook()
sheet1=wb.create_sheet()
resp= rq.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100019039124&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
content =resp.text
rest=content.replace("fetchJSON_comment98(",'').replace(");",'')
json_data= json.loads(rest)
comments =json_data["comments"]
for item in comments:
ids =item['id']
color =item["productColor"]
size=item["productSize"]
sheet1.append(['ids','color','size'])
sheet1.append([ids,color,size])
wb.save('data/ABCD_20220511.csv')
使用pandas與matplotlib對Excel數(shù)據(jù)進行可視化分析
import pandas as pd
import matplotlib as plt
# data =pd.read_csv('data/ABCD_20220511.csv')
data =pd.read_excel('data/ABC_20220511.xlsx',sheet_name='Sheet1')
nrows =data.shape[0]
ncols=data.columns.size
count =data.groupby(['color'])['size'].sum()
count.plot.bar()
打開新世界的大門
Python操作處理大量Excel表格
Wow~恭喜完成了3天的體驗課程??????
import os
import openpyxl
wb=openpyxl.Workbook()
sheet1=wb.create_sheet()
src_dir="data/"
files =os.listdir(src_dir)
print(files)
for item in files:
item.replace('.xlsx','')
sheet1.append([item])
wb.save("data/20220509.xlsx")
牛刀小試3
將爬取的數(shù)據(jù)成功保存至Excel中
import requests as rq
import json
import openpyxl
wb =openpyxl.Workbook()
sheet1=wb.create_sheet()
resp= rq.get("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100019039124&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1")
content =resp.text
rest=content.replace("fetchJSON_comment98(",'').replace(");",'')
json_data= json.loads(rest)
comments =json_data["comments"]
for item in comments:
color =item["productColor"]
size=item["productSize"]
sheet1.append(['color','size'])
sheet1.append([color,size])
wb.save('data/123_ABC_CDE.xlsx')