S01E07.智能翻页和批量下载文件【京客隆超市】

当前存在问题

在下载完财务资料的部分之后,在公告及通告专栏部分开始进行循环下载。
观察数据发现:本程序仅下载了专栏子页非1的专栏,专栏页面数为1的,都进行了跳过。
程序可能存在问题:
1)正则表达式的书写存在问题;2)“尾页”部分的IF条件判断语句存在一些问题。

import requests
from lxml import etree
import re
import os
网址 = 'http://www.jkl.com.cn/newsList.aspx?TypeId=10009'
UA伪装 = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36'}
proxies={
    'http':XXX@XXXX',
    'https':'XXX@XXXX'
    }
# 1.拿各项目的链接
响应数据 = requests.get(url=网址,headers=UA伪装,proxies=proxies,verify=False).text
解析 = etree.HTML(响应数据)
项目名称 = 解析.xpath('//div[@class="infoLis"]//a/text()')
项目链接 = 解析.xpath('//div[@class="infoLis"]//@href')
项目名称 = [项目名称.strip() for 项目名称 in 项目名称]
项目链接 = ['http://www.jkl.com.cn/'+项目链接 for 项目链接 in 项目链接]
字典1 = dict(zip(项目名称,项目链接))
for 项目名称,项目链接 in 字典1.items():
    项目名称 = 项目名称.replace('/','.')
    项目名称 = 项目名称.replace('...', '')
    路径 = 'd:/' + 项目名称
    if not os.path.exists(路径):
        os.mkdir(路径)
    else:
        响应数据 = requests.get(url=项目链接,headers=UA伪装,proxies=proxies,verify=False).text
        解析 = etree.HTML(响应数据)
        尾页 = 解析.xpath('//a[text()="尾页"]/@href')
        if 尾页 != []:
            正则 = re.search('\d{1,4}',尾页[0])
            页数 = 正则.group(0)
            print(页数)
        else:
            页数 = 1
        for 页数 in range(1,int(页数)+1):
            响应数据 = requests.get(url=项目链接,headers=UA伪装,proxies=proxies,verify=False).text
            解析 = etree.HTML(响应数据)
            文件名称 = 解析.xpath('//div[@class = "newsLis"]//li/a/text()')
            文件链接 = 解析.xpath('//div[@class = "newsLis"]//li//@href')
            文件名称 = [文件名称.strip() for 文件名称 in 文件名称]
            if all(文件链接):
                文件链接 = ['http://www.jkl.com.cn'+文件链接 for 文件链接 in 文件链接]
                字典2 = dict(zip(文件名称,文件链接))
                for 文件名称,文件链接 in 字典2.items():
                    文件名称 = 文件名称.replace('/', '.')
                    响应数据 = requests.get(url=文件链接,headers=UA伪装,proxies=proxies,verify=False).content
                    后缀 = 文件链接.split('.')[-1]
                    文件路径 = 路径 + '/' +  文件名称 + '.' + 后缀
                    # print(文件路径)
                    with open(文件路径,"wb") as 变量名:
                        变量名.write(响应数据)
                        print(文件名称,"下载成功!!!")
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容