核心代碼以下:python
主要用到:requests、re插件
數據庫
這裏寫入數據庫用到了openpyxl 本身封裝了一個類ExcelsOperate.pyjson
openpyxl的使用能夠參考Python---讀取Excel的方法(方法二)
微信
須要ExcelsOperate.py工具類的能夠關注公衆號,私聊。app
import json
import requestsimport refrom ExcelsOperate import ExcelsOperateclass appSpider: def __init__(self,orgame): self.orgame=orgame self.worksheet=ExcelsOperate(); url1="https://sj.qq.com/myapp/category.htm?orgame="+orgame response=requests.get(url1) result1=response.content.decode("utf-8") print(result1) #正則匹配菜單 patter=re.compile(r"<a href=\"\?orgame=[1,2]&categoryId=(.*)\">(.*)</a></li>") self.typedata=re.findall(patter,result1,flags=0)
def getAppinfo(self): row=1 i=0 while(i<len(self.typedata)): url1="https://sj.qq.com/myapp/category.htm?orgame="+self.orgame+"&categoryId="+self.typedata[i][0] print(url1) # 正則匹配應用 patter2="<a href=\"detail.htm\?apkName=(.*)\" target=\"_blank\" class=\"name ofh\">(.*)</a>" result2=requests.get(url1) result2=result2.content.decode("utf-8") re.compile(patter2) data=re.findall(patter2,result2,flags=0) j=1 # 寫入到Excel中 while(j<len(data)): self.worksheet.write_Cell_Value(row,1,data[j-1][0]) self.worksheet.write_Cell_Value(row, 2, data[j - 1][1]) self.worksheet.write_Cell_Value(row,3,self.typedata[i][1]) j=j+1 row=row+1 pagecontext = 40 #首頁會拉取顯示40條數據,更多的應用經過applist接口獲取的。每次獲取20條,直到返回空,接口放回的是Json數據 while(True): url2="https://sj.qq.com/myapp/cate/appList.htm?orgame="+self.orgame+"&categoryId="+self.typedata[i][0]+"&pageSize=20&pageContext="+str(pagecontext) print(url2) data=requests.get(url2) data=data.content.decode("utf-8") data=json.loads(data) k=0 data=data["obj"] if data==[]: break #寫入到Excel中 while (k < len(data)): self.worksheet.write_Cell_Value(row, 1, data[k]["pkgName"]) self.worksheet.write_Cell_Value(row, 2, data[k]["appName"]) self.worksheet.write_Cell_Value(row, 3, self.typedata[i][1]) j = j + 1 row = row + 1 print(data[k]["pkgName"]) k=k+1 pagecontext=pagecontext+20; i=i+1if __name__=="__main__": orgame="2" appSpider=appSpider(orgame) appSpider.getAppinfo()
本文分享自微信公衆號 - 軟件測試道與術(UTesting)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。ide