python requests爬取税务总局税案通报、税务新闻和政策解读

文章目录

        • 环境配置
        • 页面
        • 爬取流程
          • 税案通报爬取
          • code
          • 税务新闻爬取
          • 政策解读爬取

环境配置

python:3.7
requests:发出请求,返回页面
beautifulsoup:解析页面
time:及时
warnings:忽视警告

页面

网址:https://www.chinatax.gov.cn/n810346/n3504626/n3504648/index.html
在这里插入图片描述
本文的需求在于爬取“新闻发布”和“政策法规”下的页面
具体页面结构为

  • 首页——新闻发布——税案通报
  • 首页——新闻发布——税务新闻
  • 首页——政策法规——政策解读
爬取流程
税案通报爬取

目标网址:https://www.chinatax.gov.cn/chinatax/n810219/c102025/common_listwyc.html

  • 分析网页页面
    属于典型的两段式爬取,每个页面有20篇文件,一共38页,分析页面url发现规律之后,只需要改变page={i},通过i的变化获取总url
  • 在网页源代码中发现每篇文件单独的url都可以获取,任务相对比较简单。
    在这里插入图片描述
  • 编写代码获取每篇文件的url,之后提取文字内容即可。
code
import requests
import warnings 
import time
from bs4 import BeautifulSoup
warnings.filterwarnings("ignore")def get_page(page):url = f"https://www.chinatax.gov.cn/chinatax/manuscriptList/n810724?_isAgg=0&_pageSize=20&_template=index&_channelName=%E7%A8%8E%E5%8A%A1%E6%96%B0%E9%97%BB&_keyWH=wenhao&page={page}"try:  res = requests.get(url,verify = False)except:print(url)time.sleep(2)soup=BeautifulSoup(res.text,'html.parser')   #BeautifulSoup中的方法#print(soup.find_all(name='div',attrs={"class":"title"})) #按照字典的形式给attrs参数赋值links = []for link in soup.find_all('a'):      #遍历网页中所有的超链接(a标签)href = link.get('href')    #  打印出所有包含href的元素的链接。'''if "http://www.chinatax.gov.cn/chinatax/n810219/n810724/c" in href:links.append(href)print(links)return links
for page in range(151,165):links = get_page(page)for id,li in enumerate(links):try:res = requests.get(li,verify = False)time.sleep(1)res.encoding = res.apparent_encodingsoup=BeautifulSoup(res.text,'html.parser')   #BeautifulSoup中的方法title = soup.title.text.strip('\r\n  ')print(title)with open(title +'.txt','w',encoding='utf-8') as f:for link in soup.find_all('p'):f.write(link.get_text()+'\n')except:print(li)
税务新闻爬取

目标网址:https://www.chinatax.gov.cn/chinatax/n810219/n810724/common_list_swxw.html

  • 分析网页页面
    属于典型的两段式爬取,每个页面有20篇文件,一共167页,分析页面url发现规律之后,只需要改变page={i},通过i的变化获取总url

  • 在网页源代码中发现每篇文件单独的url都可以获取,任务相对比较简单。

  • 编写代码获取每篇文件的url,之后提取文字内容即可。和税案通报的爬取方式类似,更改初始url即可。

  • 爬取结果
    共爬取3188篇税务新闻文件,604篇税案通报文件。

在这里插入图片描述

政策解读爬取

目标网址:https://fgk.chinatax.gov.cn/zcfgk/c100015/list_zcjd.html

  • 分析网页页面
    属于典型的两段式爬取,每个页面有10篇文件,一共57页,分析页面url发现规律之后,只需要改变page={i},通过i的变化获取总url

  • 在网页源代码中发现无法观察到每篇文件单独的url
    在这里插入图片描述

  • 右键点击“检查”进入开发者模式,继续点击 Network——Fetch/XHR,之后刷新页面,发现右下角区域出现新文件,进行点击。
    在这里插入图片描述

  • headers是页面基本信息,包括Request URLRequest Method、Status Code等等。
    Previewjson格式的页面信息,ResponseHTML格式的页面信息,可以发现单独文件的url在这里面都可以发现。
    在这里插入图片描述

  • 通过Request URL请求网页信息,获取单独的文件url。

    1. 将请求通过json形式进行解析,可以获取文件网址url、标题title、内容content等许多信息。
    2. 但直接提取content发现内容显示不全,因此还是需要两段式继续提取具体的文件信息。
    3. urlcontent作为字典保存。
import requests
import warnings 
import time
from bs4 import BeautifulSoup
warnings.filterwarnings("ignore")def get_page(page):url = f"https://www.chinatax.gov.cn/search5/search/s?siteCode=bm29000002&searchWord=&type=1&xxgkResolveType=%E6%96%87%E5%AD%97&pageNum={page}&pageSize=10&cwrqStart=&cwrqEnd=&column=%E6%94%BF%E7%AD%96%E8%A7%A3%E8%AF%BB&likeDoc=0&wordPlace=0&videoreSolveType="res = requests.get(url,verify = False)res.encoding = res.apparent_encodingtime.sleep(1)dic = {}for i in range(len(res.json()["searchResultAll"]["searchTotal"])):url = res.json()["searchResultAll"]["searchTotal"][i]["url"]   #,sort_keys=True, indent=4, separators=(',', ': '))title = res.json()["searchResultAll"]["searchTotal"][i]["title"]#title = title.encode("utf-8").decode("unicode_escape")#url = json.dumps(content)["url"]#title = content["title"].encode("utf-8").decode("unicode_escape")#content = content.encode("utf-8").decode("unicode_escape")dic[url] = titleprint(dic)return dic
  • 使用得到的url提取,分析新文件的文本内容的分布位置,使用find_all进行爬取,将title作为文件标题
for page in range(1,57):dic = get_page(page)for key in dic:print(dic[key])print()res = requests.get(key,verify = False)res.encoding = res.apparent_encodingtime.sleep(1)soup=BeautifulSoup(res.text,'html.parser')   #BeautifulSoup中的方法title = dic[key]with open(title +'.txt','w',encoding='utf-8') as f:for link in soup.find_all('p',style=True):styles = link.get('style', '').split(';')  # 将style属性值拆分为一个列表  if ('display: none' not in styles) and ('display: inline-block' not in styles):print(link.get_text())f.write(link.get_text()+'\n')
  • 发现可以提取文件,但有很多空文件。查看网页源代码发现不同文件的文本内容分布方式不同。根据发现的新分布更新find_all函数内容,继续爬取。
for page in range(1,57):dic = get_page(page)for key in dic:print(dic[key])print()res = requests.get(key,verify = False)res.encoding = res.apparent_encodingtime.sleep(1)soup=BeautifulSoup(res.text,'html.parser')   #BeautifulSoup中的方法title = dic[key]with open('test/'+title+'.txt','w',encoding='utf-8') as f:for link in soup.find_all('p', attrs={'class': None}):#styles = link.get('style', '').split(';')  # 将style属性值拆分为一个列表  #if ('display: none' not in styles) and ('display: inline-block' not in styles):print(link.get_text())f.write(link.get_text()+'\n')
  • 爬取结果
    共爬取558篇政策解读文件。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/166158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聊聊设计模式--简单工厂模式

简单工厂模式 ​ 前面也学了很多各种微服务架构的组件,包括后续的服务部署、代码管理、Docker等技术,那么作为后端人员,最重要的任务还是代码编写能力,如何让你的代码写的漂亮、易扩展,让别人一看赏心悦目&#xff0c…

城市正视图(Urban Elevations, ACM/ICPC World Finals 1992, UVa221)rust解法

如图5-4所示,有n(n≤100)个建筑物。左侧是俯视图(左上角为建筑物编号,右下角为高度),右侧是从南向北看的正视图。 输入每个建筑物左下角坐标(即x、y坐标的最小值)、宽度…

使用Spire.PDF for Python插件从PDF文件提取文字和图片信息

目录 一、Spire.PDF插件的安装 二、从PDF文件提取文字信息 三、从PDF文件提取图片信息 四、提取图片和文字信息的进阶应用 总结 在Python中,提取PDF文件的文字和图片信息是一种常见的需求。为了满足这个需求,许多开发者会选择使用Spire.PDF插件&…

C++特性——inline内联函数

1. 内联函数 1.1 C语言的宏 在C语言中,我们学习了用#define定义的宏函数,例如: #define Add(x, y) ((x) (y)) //两数相加相较于函数,我们知道宏替换具有如下比较明显的优点: 性能优势: 宏在预处理阶段…

将本地的项目上传到Gitee

目录 1.先在Gitee新建一个仓库,提交即可 2.进入到要上传的项目里面,右键选择 Git Bash Here 3.右键后就打开了Git命令窗口 4.配置你的用户名和邮箱(已经配置过则可跳过) 5.查看你的用户名和邮箱配置(可不查看) 6.输入git init指令&#…

【java】【重构一】分模块开发设计实战

目录 一、创建项目 1、先创建一个空项目 2、设置项目SDK等 二、创建父模块 选择springboot 1、创建父模块parent 2、删除多余文件,只保留pom.xml 3、修改pom.xml 4、将部分公共依赖加入到pom 三、创建实体类子模块entity 1、创建实体类子模块entity 2、…

关注用户信息卡片

效果展示 CSS 知识点 box-shadow 属性回顾CSS 变量回顾 实现页面整体布局 <div class"card"><div class"box"><!-- 视频 --><div class"vide_box"><video src"user.mp4" type"video/mp4" aut…

gulp打包vue3+jsx+less插件

最终转换结果如下 在根目录下添加gulpfile.js文件&#xff0c;package.json添加命令npm run gulp var gulp require(gulp) var babel require(gulp-babel) var less require(gulp-less) var del require(del); var spawn require(child_process).spawn;const outDir &…

Mysql数据库 1. SQL基础语法和操作

一、Mysql逻辑结构 一个数据库软件可以包含许多数据库 一个数据库包含许多表 一个表中包含许多字段&#xff08;列&#xff09; 数据库软件——>数据库——>数据表——>字段&#xff08;列&#xff09;、元组&#xff08;行&#xff09; 二、SQL语言基础语法 1.SQL…

机器学习(24)---AdaBoost(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写

2022年亚太杯APMCM数学建模大赛D题储能系统中传热翅片的结构优化求解全过程文档及程序

2022年亚太杯APMCM数学建模大赛 D题 储能系统中传热翅片的结构优化 原题再现 高效储能技术是解决可再生能源和余热资源波动性和间歇性的核心技术。相变蓄热以其较高的储能密度和近恒温蓄热放热而得到广泛应用。固-液相变材料具有相变前后相变潜热高、体积变化小等特点&#x…

智慧公厕蜕变多功能城市智慧驿站公厕的创新

随着城市发展的不断推进&#xff0c;对公共设施的便利性和智能化要求也日益提高。为满足市民对高品质、便捷、舒适的公共厕所的需求&#xff0c;智慧公厕行业的领航厂家广州中期科技有限公司&#xff0c;全新推出了一体化智慧公厕驿站。凭借着“高科技碳中和物联网创意设计新经…

3、Kafka Broker

4.1 Kafka Broker 工作流程 4.1.1 Zookeeper 存储的 Kafka 信息 &#xff08;1&#xff09;启动 Zookeeper 客户端。 [hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh&#xff08;2&#xff09;通过 ls 命令可以查看 kafka 相关信息。 [zk: localhost:2181(CONNECTED) 2] ls /kaf…

案例分析真题--架构师

案例分析真题--架构师 试题1 质量属性架构风格 软件架构设计 系统开发基础 数据库系统 其他嵌入式 试题1 质量属性架构风格

TCP/IP(十九)TCP 实战抓包分析(三)TCP 第一次握手 SYN 丢包

一 TCP 三次握手异常情况实战分析 说明&#xff1a; 本文是TCP 三次握手异常系列之一 ① 异常场景 接下里我用三个实验案例,带大家一起探究探究这三种异常关注&#xff1a; 如何刻意练习模拟上述场景 以及 wireshark现象 ② 实验环境 ③ 实验一&#xff1a;TCP 第一次握…

redis(其它操作、管道)、django中使用redis(通用方案、 第三方模块)、django缓存、celery介绍(celery的快速使用)

1 redis其它操作 2 redis管道 3 django中使用redis 3.1 通用方案 3.2 第三方模块 4 django缓存 5 celery介绍 5.1 celery的快速使用 1 redis其它操作 delete(*names) exists(name) keys(pattern*) expire(name ,time) rename(src, dst) move(name, db)) randomkey() type(na…

wireshark数据包内容查找功能详解

wireshark提供通过数据包特征值查找具体数据包的功能&#xff0c;具体查找功能如下&#xff0c; &#xff08;1&#xff09;选择查找目标区域&#xff08;也就是在哪里去匹配特征值&#xff09; 如下图&#xff0c;【分组列表】区域查找指的是在最上方的数据包列表区域查找&…

QT中窗口自绘制效果展示

项目中需要使用QT进行窗口自绘&#xff0c;前期先做一下技术探索&#xff0c;参考相关资料代码熟悉流程。本着代码是最好的老师原则&#xff0c;在此记录一下。 目录 1.运行效果 2.代码结构 3.具体代码 1.运行效果 2.代码结构 3.具体代码 myspeed.pro QT core gui…

vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决;解决webRTC播放卡花屏问题:

播放多个视频 <div class"video-box"><div class"video"><iframe style"width:100%;height:100%;" name"ddddd" id"iframes" scrolling"auto" :src"videoLeftUrl"></iframe>&l…

缓存失效方案

一、背景 WRITE &#xff1a; 数据写入Mysql 和 Redis缓存&#xff0c; READ&#xff1a;先从 Redis 缓存中取数据&#xff0c;拿不到再从Mysql中加载&#xff0c;更新到Redis 上图第三阶段&#xff0c;接收Mysql的binlog变更消息&#xff0c;可以参考阿里的 Canal&#xff0…