1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python爬取税务局并将数据保存在Excel

python爬取税务局并将数据保存在Excel

时间:2021-02-13 07:35:04

相关推荐

python爬取税务局并将数据保存在Excel

目标地址:http://www./chinatax/n810346/n810825/index.html

采集

采集以下栏目:

增值税、消费税的前两页数据

每个栏目的:

标题、发文日期、文号

保存

将所有信息保存到税务局.xlsx文件,依据栏目名创建数据表,每个栏目的数据保存到对应的数据表

还是先找到目标数据(如果没有记得刷新):

这样就可以获取它的url、请求头之类的信息(点击那个Headers),最后根据自己的思路一步步爬取:

导入相关库:

import openpyxlimport requestsimport jsonimport timeimport pprint

请求头:

url = 'http://www./api/query'params = {'siteCode': 'bm29000fgk','tab': 'all','key': '9A9C42392D397C5CA6C1BF07E2E0AA6F'}headers = {'Host': 'www.','Origin': 'http://www.','Referer': 'http://www./chinatax/n810346/n810825/index.html','User-Agent': '你的user-agent','Cookie': '你的cookie'}

获取form_data数据(都是在Headers那里可以得到):

def get_data(con, page):form_data = {'timeOption': '0','C6': f'{con}',# 关键字'page': f'{page}',# 实现翻页'pageSize': '10','keyPlace': '1','sort': 'dateDesc','qt': '*'}return form_data

获取信息并保存:

def get_mes(con, page):response = requests.post(url=url,params=params,data=get_data(con, page),headers=headers)res_dict = json.loads(response.content.decode(encoding='utf-8-sig'))# pprint.pprint(res_dict)res = res_dict['resultList']wb = openpyxl.load_workbook('税务局.xlsx', read_only=False)if con not in wb.sheetnames:# 如果没有该表就会新建一个i = 1 # 用来实现行变sheet = wb.create_sheet(con)for data in res:dreTitle = data['dreTitle']# 获取标题publishTime = data['publishTime']# 获取发文日期documentNumber = data['customHs']['DOCNOVAL'] # 获取文号# print(dreTitle, publishTime, documentNumber)sheet.cell(row=i, column=1).value = dreTitle# 将标题写入1行1列sheet.cell(row=i, column=2).value = publishTime # 将发文日期写入1行2列sheet.cell(row=i, column=3).value = documentNumber # 将文号写入1行3列i += 1 # 行号加一wb.save('税务局.xlsx')else: # 如果表已经存在就接下去追加数据# passi = (11 * (page - 1))# 因为每一页有10条数据,所以如果是第二页那么就要从11行开始写入,以此类推table = wb.get_sheet_by_name(con)# print(table.title)for data in res: # 接下来的代码其实是重复的,如果觉得累赘,可以写成方法以加强代码的复用性dreTitle = data['dreTitle'] publishTime = data['publishTime']documentNumber = data['customHs']['DOCNOVAL'] # print(dreTitle, publishTime, documentNumber)table.cell(row=i, column=1).value = dreTitle# 将table.cell(row=i, column=2).value = publishTimetable.cell(row=i, column=3).value = documentNumberi += 1wb.save('税务局.xlsx')

mian函数:

if __name__ == '__main__':wb = openpyxl.Workbook() # 创建工作簿wb.save('税务局.xlsx')for page in range(1, 3): # 爬取增值税的前两页get_mes('增值税', page)time.sleep(5)print("succeed")for page in range(1, 3):# 爬取消费税的前两页get_mes('消费税', page)time.sleep(5)print("succeed")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。