zzzzy09

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

#-*- 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()

 

posted on 2021-06-07 11:42  zzzzy09  阅读(47)  评论(0编辑  收藏  举报