生活随笔
收集整理的這篇文章主要介紹了
Python——LOL官方商城皮肤信息爬取(一次练手)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
# -*- coding utf-8 -*-
import urllib
import urllib.request
import json
import time
import xlsxwriter
from asyncio.tasks
import sleep
import re# 根據(jù)第一頁數(shù)據(jù)創(chuàng)建信息表頭
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())# 創(chuàng)建工作簿,寫表頭
workbook = xlsxwriter.Workbook(
"E:/lol_sales.xlsx")
sheet = workbook.add_worksheet(
"result")
for i
in range(len(header)):sheet.write(0,i,header[i])# 獲取數(shù)據(jù)
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 += 1
except:passprint(
"page" +
str(page_index))
workbook.close()
print(
"finish")
獲取的數(shù)據(jù)內(nèi)容如下:
總結(jié):
?1.表頭的獲取方式。
不要再自己編寫表頭啦,一是太費(fèi)事,二是不靈活。
通過創(chuàng)建空的列表,讀取示范頁面(如第一頁)的信息表頭,使用.append即可創(chuàng)建所需表頭。
2.多數(shù)網(wǎng)站的數(shù)據(jù)格式都是json,但是其返回的還附帶了json數(shù)據(jù)的表頭,注意刪除掉。
如.replace("var ogoods_list_api = ","").replace("\n","")。這樣才是符合格式要求的json(可以用這個網(wǎng)站測試json格式是否標(biāo)準(zhǔn):Be JSON),否則無法用json.loads()讀取,因?yàn)闀蛔R別成字符串。
3.json.loads(s),中讀取的是字符串?dāng)?shù)據(jù)。
4.即使讀取出來的數(shù)據(jù)編碼是unicode,但是寫入excel的時(shí)候就被解碼了。(使用了多種方式仍無法對數(shù)據(jù)解碼,故打算提取后單獨(dú)解碼,后發(fā)現(xiàn)寫入excel的是解碼后的數(shù)據(jù)。意外發(fā)現(xiàn)。)
5.關(guān)于表頭的提取:
首先使用兩次split,分別是“,”和“:”將json的key提取出來。接下來使用正則表達(dá)式提取{'ret'中的ret。在這里使用了這樣的方法:用\w提取英文字符,再用''.join()合并起來
轉(zhuǎn)載于:https://www.cnblogs.com/shadrach/p/7885873.html
總結(jié)
以上是生活随笔為你收集整理的Python——LOL官方商城皮肤信息爬取(一次练手)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。