Python中Cookies導出某站用戶數據的方法
應朋友需要,想將某客戶的數據從某站裡導出,先去某站搞個賬號,建幾條數據觀察一番,心裡有底後開搞。
1.Python環境搭建
之前電腦有安裝過PyCharm Community 2019.1,具體安裝過程就不寫瞭,先跑個HelloWorld,輸出正常後正式開整。
2.利用抓包工具或者Google瀏覽器調試模式拿到請求參數
Cookies參數如下:
cookies = { 'JSESSIONID': 'XXX', 'phone': 'XXX', 'password': 'XXX', 'isAuto': '0', ' loginAccess': 'XXX' }
headers請求頭信息構造:
headers = { 'Connection': 'keep-alive', 'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'X-Requested-With': 'XMLHttpRequest', 'sec-ch-ua-mobile': '?0', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', 'Content-Type': 'application/json', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Referer': 'https://xxx.xxx.xxx', 'Accept-Language': 'zh-CN,zh;q=0.9',}
請求路徑:
params = ( ('method', 'getGoodsList'))
請求參數組裝:
data = '{ "pageSize":1000, "pageNumber":1, "searchText":"", "sortOrder":"asc", "isAdvancedSearch":false}'
pageSize:每頁數據數量
pageNumber:頁碼
searchText:搜索條件
sortOrder:排序
3.利用Requests模擬請求並獲取數據
response = requests.post( 'https://xxx.xxx.xxx', headers=headers, params=params, cookies=cookies, data=data ) print(response.text.encode('utf8')) res = json.loads(response.text)
4.創建Excel表格
t = time.time() randStr = int(round(t * 1000)) tSheetName = "a_" + str(randStr) + ".xlsx" workbook = xlsxwriter.Workbook(tSheetName) worksheet = workbook.add_worksheet()
5.表頭及數據組裝
cursor = 0 picurl = '' writeExcel(row=cursor) for obj in res["rows"]: cursor += 1 picurl = '' if obj['ImageKID']: picurl = 'https://xxx.xxx.xxx? imageKid='+obj['ImageKID'] writeExcel(row=cursor,Description=obj['Description'], Category=obj['Category'], Series=obj['Series'],BaseUnit=obj['BaseUnit'],Qty=obj['Qty'], CostPrice=obj['CostPrice'],SalePrice=obj['SalePrice'], RetailPrice=obj['RetailPrice'],Barcode=obj['Barcode'], Remark=obj['Remark'], ImageKID=picurl)
6.將數據寫入Excel表格中
def writeExcel(row=0, Description='', Category='', Series='', BaseUnit='', Qty='', CostPrice='', SalePrice='', RetailPrice='', Barcode='', Remark='',ImageKID=''): if row == 0: worksheet.write(row, 0, '名稱') worksheet.write(row, 1, '貨號') worksheet.write(row, 2, '規格') worksheet.write(row, 3, '單位') worksheet.write(row, 4, '庫存') worksheet.write(row, 5, '成本') worksheet.write(row, 6, '批發價') worksheet.write(row, 7, '零售價') worksheet.write(row, 8, '條碼') worksheet.write(row, 9, '備註') worksheet.write(row, 10, '圖片') else: if ImageKID!='': image_data = io.BytesIO(urllib.urlopen(ImageKID).read()) worksheet.insert_image(row, 10, ImageKID, {'image_data': image_data}) worksheet.write(row, 0, Description) worksheet.write(row, 1, Category) worksheet.write(row, 2, Series) worksheet.write(row, 3, BaseUnit) worksheet.write(row, 4, Qty) worksheet.write(row, 5, CostPrice) worksheet.write(row, 6, SalePrice) worksheet.write(row, 7, RetailPrice) worksheet.write(row, 8, Barcode) worksheet.write(row, 9, Remark) worksheet.set_column(10, 10, 23) worksheet.set_row(row, 150)
註意圖片路徑不存在的情況,否則會執行異常
write方法:
def write(self, row, col, *args): """ Write data to a worksheet cell by calling the appropriate write_*() method based on the type of data being passed. Args: row: The cell row (zero indexed). col: The cell column (zero indexed). *args: Args to pass to sub functions. Returns: 0: Success. -1: Row or column is out of worksheet bounds. other: Return value of called method. """ return self._write(row, col, *args)
通過set_row方法設置表格行高
def set_row(self, row, height=None, cell_format=None, options=None): """ Set the width, and other properties of a row. Args: row: Row number (zero-indexed). height: Row height. (optional). cell_format: Row cell_format. (optional). options: Dict of options such as hidden, level and collapsed. Returns: 0: Success. -1: Row number is out of worksheet bounds. ...... """
通過set_column方法設置圖片列寬度:
def set_column(self, first_col, last_col, width=None, cell_format=None, options=None): """ Set the width, and other properties of a single column or a range of columns. Args: first_col: First column (zero-indexed). last_col: Last column (zero-indexed). Can be same as first_col. width: Column width. (optional). cell_format: Column cell_format. (optional). options: Dict of options such as hidden and level. Returns: 0: Success. -1: Column number is out of worksheet bounds. ...... """
通過insert_image插入網絡圖片:
def insert_image(self, row, col, filename, options=None): """ Insert an image with its top-left corner in a worksheet cell. Args: row: The cell row (zero indexed). col: The cell column (zero indexed). filename: Path and filename for image in PNG, JPG or BMP format. options: Position, scale, url and data stream of the image. Returns: 0: Success. -1: Row or column is out of worksheet bounds. """ # Check insert (row, col) without storing. if self._check_dimensions(row, col, True, True): warn('Cannot insert image at (%d, %d).' % (row, col)) return -1 if options is None: options = {} x_offset = options.get('x_offset', 0) y_offset = options.get('y_offset', 0) x_scale = options.get('x_scale', 1) y_scale = options.get('y_scale', 1) url = options.get('url', None) tip = options.get('tip', None) anchor = options.get('object_position', 2) image_data = options.get('image_data', None) description = options.get('description', None) decorative = options.get('decorative', False) # For backward compatibility with older parameter name. anchor = options.get('positioning', anchor) if not image_data and not os.path.exists(filename): warn("Image file '%s' not found." % force_unicode(filename)) return -1 self.images.append([row, col, filename, x_offset, y_offset, x_scale, y_scale, url, tip, anchor, image_data, description, decorative]) return 0
註意insert_image(row, colunmNum, ‘xx.png’, {‘url’: xxx})並不能插入網絡圖片,隻是給本地圖片一個url路徑
7.關閉表格
workbook.close()
8.附引入的包
# -*- coding: UTF-8 -*- # 批量獲取XX數據 import io import json import requests import sys import xlsxwriter import time import urllib
9.代碼跑起來
在看下Excel表格中導出的信息
到此這篇關於Python中Cookies導出某站用戶數據的方法的文章就介紹到這瞭,更多相關Python Cookies導出數據內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python處理excel文件之xlsxwriter 模塊
- python xlsxwriter模塊的使用
- python 使用xlsxwriter循環向excel中插入數據和圖片的操作
- 如何利用Python批量處理行、列和單元格詳解
- 使用Python讀取和修改Excel文件(基於xlrd、xlwt和openpyxl模塊)