• 获取国税门户可供下载的资源文档


    #-*- coding:utf-8 -*-
    #
    #爬取国税门户相关资源文件
    #
    #
    #使用 requests 和lxml 模块
    import requests
    from lxml import etree
    
    #定义请求的 url ,这里采用手动更换的方式爬取多个url 路径,并定义headers
    url = 'http://beijing.chinatax.gov.cn/bjswj/c104354/cs_li_2.shtml'
    headers =  {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
     }
    
    #定义request 会话对象
    requestsSession = requests.Session()
    
    
    def getUrl():
        #获取页面响应数据的text 格式
        responseHtml = requestsSession.get(url=url, headers=headers, timeout=3).text
        #使用etree 格式化文本
        xpathObj = etree.HTML(responseHtml)
        #通过xpath 获取要爬取的资源链接所在页面
        dataUrl = xpathObj.xpath('//div[@class="xxgk_tzgg"]/ul//a/@href')
        host = 'http://beijing.chinatax.gov.cn'
        #遍历列表对象
        for i in dataUrl:
            print(i)
            #重组 资源url
            uurl = host + i
            RRdata = requestsSession.get(url=uurl, headers=headers, timeout=3).text
            xpathRR = etree.HTML(RRdata)
            #获取资源路径
            dataUrl = xpathRR.xpath('//div[@class="mobile-show"]//div[@class="xwzx_fujian"]/ul//a/@href')
            # dataname = xpathRR.xpath('normalize-space(//div[@class="mobile-show"]//div[@class="xwzx_fujian"]/ul//a/text())')
            #获取资源a 标签中的名称,因为默认下载的资源名称时英文字符串,
            dataname = xpathRR.xpath('//div[@class="mobile-show"]//div[@class="xwzx_fujian"]//li//a/text()')
            print(dataname)
            print(dataUrl)
            # 这一步是将删除将末尾/ 后面内容删除,为后面下载内容构造 url 做准备
            hh =uurl[:uurl.rfind('/')]
            #名称和资源路径在两个list 中,使用zip 函数可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
            for ii,dd in zip(dataUrl,dataname):
                getuul = hh + '/' + ii
                print(getuul)
                #删除中文名称字符串左右两边的空格
                cc = str(dd).strip()
                r =  requestsSession.get(url=getuul, headers=headers, timeout=3)
                fp = open(cc,'wb')
                fp.write(r.content)
                fp.close()
                # wget.download(getuul, out=cc)
    
    if __name__ == '__main__':
        getUrl()
  • 相关阅读:
    CSS记录
    ssl各种证书区别
    【PG数据库】PG数据库的安装及连接方法
    linux 系统 如何 安装 python (python 3.8)
    【学习数据结构数据结构入门1】什么是数据结构?
    Javascript实现复制功能,兼容所有浏览器问题及注意事项
    浏览器版本的全部信息(Javascript)
    正则表达式——多邮箱地址检测 (Regular Expression Mutil Email Checking)
    Fusion网站开发总结_2012322
    CSS开发总结_2012322
  • 原文地址:https://www.cnblogs.com/zy09/p/14858248.html
Copyright © 2020-2023  润新知