当前存在问题
在下载完财务资料的部分之后,在公告及通告专栏部分开始进行循环下载。
观察数据发现:本程序仅下载了专栏子页非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(文件名称,"下载成功!!!")