你領到國家的退稅“紅包”了嗎?

mmz_77發表於2023-03-01

3月1日起,2022年度個稅彙算正式開始。一些人又可以領到國家的退稅“紅包”了。

很多網友在3月1日凌晨申請退稅,紛紛曬出自己的退稅金額,有的人退稅金額超過萬元,直呼:真香!

稅務部門自從推出預約辦理服務後,大家都紛紛在個稅app上提前開始預約了截至2月28日,個稅APP顯示,3月1日當天預約已滿。3月2日-3月20日仍然可以預約。

你領到國家的退稅“紅包”了嗎?

剛好最近要分享些爬蟲類的文章,那本次實驗以爬取“ 中的“城鄉居民收支基本情況”為例,因為居民的收入支出也是跟稅收有關聯的。

資料爬蟲基本流程如下:

發起請求:透過向目標站點發起請求,即傳送一個request,請求可以包含額外的headers等資訊,等待伺服器響應

url='
headers={'User-Agent':'Mozilla/5.0(Windows;U;Windows NT6.1;en-US;rv:1.9.1.6) Geko/20091201 Firefox/3.5.6'}#瀏覽器代理
key={}#引數鍵值對
key['m']='QueryData'
key['dbcode']='hgyd'
key['rowcode']='zb'
key['colcode']='sj'
key['wds']='[]'
key['dfwds']='[{"wdcode":"sj","valuecode":"LAST13"}]'
key['k1']=str(getTime())
r=requests.get(url,headers=headers,params=key)
js=json.loads(r.text)
js


獲取相應內容:如果伺服器能正常響應,會得到一個response,response的內容便是所要獲取的頁面內容,型別可能有HTML,json字串,二進位制資料等型別。根據實際分析發現,目標網站的反爬機制很嚴格,特別是針對IP的限制,同一個IP多次訪問就被關小黑屋。所以這裡我們直接採用python3使Selenium+Chrome+BeautifulSoup+隧道加強版IP池來進行爬取

#! -- encoding:utf-8 -- import requests # 匯入requests庫 import random import threading # 匯入threading庫,用於多執行緒
#要訪問的目標頁面
targetUrlList = [ “”, “”, “”, ]
#代理伺服器(產品官網 )
proxyHost = “t.16yun.cn” proxyPort = “31111”
#代理驗證資訊
proxyUser = “16yun” proxyPass = “16ip”
proxyMeta = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}" # 使用f-string格式化字串
#設定 http和https訪問都是用HTTP代理
proxies = { “http”: proxyMeta, “https”: proxyMeta, }
#設定IP切換頭
tunnel = random.randint(1, 10000) headers = {“Proxy-Tunnel”: str(tunnel)}
#定義一個變數,用於統計請求次數
request_count = 0
#定義一個鎖物件,用於保護請求次數的變數
lock = threading.Lock()
#定義一個函式,用於發起請求和列印響應
def get_url(url): global request_count # 宣告全域性變數 r = requests.get(url, proxies=proxies, headers=headers) # 使用requests庫發起請求,傳入代理和頭資訊 # 判斷狀態碼是否為200,如果不是,列印錯誤資訊 if r.status_code == 200: print(r.text) # 列印響應內容 else: print(f"請求失敗,狀態碼為{r.status_code}") # 列印錯誤資訊 # 獲取鎖,如果鎖被佔用,就等待,直到鎖釋放 lock.acquire() request_count += 1 # 請求次數加一 # 釋放鎖,讓其他執行緒可以獲取鎖 lock.release()
#定義一個列表,用於存放執行緒物件
threads = []
#訪問三次網站,使用相同的tunnel標誌,均能夠保持相同的外網IP
for i in range(3): for url in targetUrlList: t = threading.Thread(target=get_url, args=(url,)) # 建立執行緒物件,傳入url引數 threads.append(t) # 將執行緒物件新增到列表中
#啟動所有執行緒
for t in threads: t.start()
#等待所有執行緒結束
for t in threads: t.join()
#列印請求次數
print(f"總共請求了{request_count}次")

解析內容:得到的內容可能是HTML,可以用正規表示式,網頁解析庫進行解析,可能是json,可以直接轉為json物件,可能是二進位制資料,可以做儲存或者進一步的處理

儲存資料:可以存為文字,也可以儲存至資料庫,或者特定格式的檔案




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31522063/viewspace-2937674/,如需轉載,請註明出處,否則將追究法律責任。

相關文章