Python——LOL官方商城皮肤信息爬取(一次练手)
生活随笔
收集整理的這篇文章主要介紹了
Python——LOL官方商城皮肤信息爬取(一次练手)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding utf-8 -*-
import urllib
import urllib.request
import json
import time
import xlsxwriter
from asyncio.tasks import sleep
import re# 根據第一頁數據創建信息表頭
header = []
url = "http://apps.game.qq.com/daoju/v3/api/hx/goods/api/list/v54/GoodsListApp.php?view=biz_cate&page=1&pageSize=8&orderby=dtShowBegin&ordertype=desc&cate=17&appSource=pc&appSourceDetail=pc_lol_revison&channel=1001&storagetype=6501&plat=0&output_format=jsonp&biz=lol"
data = json.loads(urllib.request.urlopen(url).read().decode("gbk").replace("var ogoods_list_api = ","").replace("\n",""))
goods_info = data["data"]["goods"][0]["valiDate"][0]
for i in range(len(goods_info)):header.append(''.join((re.findall("\w",str(str(goods_info).split(",")[i]).split(":")[0]))).strip())# 創建工作簿,寫表頭
workbook = xlsxwriter.Workbook("E:/lol_sales.xlsx")
sheet = workbook.add_worksheet("result")
for i in range(len(header)):sheet.write(0,i,header[i])# 獲取數據
row_index = 1
for page_index in range(1,61):url = "http://apps.game.qq.com/daoju/v3/api/hx/goods/api/list/v54/GoodsListApp.php?view=biz_cate&page=" + str(page_index) + "&pageSize=8&orderby=dtShowBegin&ordertype=desc&cate=17&appSource=pc&appSourceDetail=pc_lol_revison&channel=1001&storagetype=6501&plat=0&output_format=jsonp&biz=lol"data = json.loads(urllib.request.urlopen(url).read().decode("gbk").replace("var ogoods_list_api = ","").replace("\n",""))for goods_index in range(6):try:for col_index in range(len(header)):if header[col_index] == "award":passelse:sheet.write(row_index,col_index,data["data"]["goods"][goods_index]["valiDate"][0][header[col_index]])row_index += 1except:passprint("page" + str(page_index))
workbook.close()
print("finish") 首先使用兩次split,分別是“,”和“:”將json的key提取出來。 接下來使用正則表達式提取{'ret'中的ret。在這里使用了這樣的方法:用\w提取英文字符,再用''.join()合并起來
獲取的數據內容如下:
總結:
?1.表頭的獲取方式。
不要再自己編寫表頭啦,一是太費事,二是不靈活。
通過創建空的列表,讀取示范頁面(如第一頁)的信息表頭,使用.append即可創建所需表頭。
2.多數網站的數據格式都是json,但是其返回的還附帶了json數據的表頭,注意刪除掉。
如.replace("var ogoods_list_api = ","").replace("\n","")。這樣才是符合格式要求的json(可以用這個網站測試json格式是否標準:Be JSON),否則無法用json.loads()讀取,因為會被識別成字符串。
3.json.loads(s),中讀取的是字符串數據。
4.即使讀取出來的數據編碼是unicode,但是寫入excel的時候就被解碼了。(使用了多種方式仍無法對數據解碼,故打算提取后單獨解碼,后發現寫入excel的是解碼后的數據。意外發現。)
5.關于表頭的提取:
轉載于:https://www.cnblogs.com/shadrach/p/7885873.html
總結
以上是生活随笔為你收集整理的Python——LOL官方商城皮肤信息爬取(一次练手)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate day01
- 下一篇: vue-resource.js的get和