當(dāng)前存在問題
在下載完財(cái)務(wù)資料的部分之后,在公告及通告專欄部分開始進(jìn)行循環(huán)下載。
觀察數(shù)據(jù)發(fā)現(xiàn):本程序僅下載了專欄子頁非1的專欄,專欄頁面數(shù)為1的,都進(jìn)行了跳過。
程序可能存在問題:
1)正則表達(dá)式的書寫存在問題;2)“尾頁”部分的IF條件判斷語句存在一些問題。
import requests
from lxml import etree
import re
import os
網(wǎng)址 = '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.拿各項(xiàng)目的鏈接
響應(yīng)數(shù)據(jù) = requests.get(url=網(wǎng)址,headers=UA偽裝,proxies=proxies,verify=False).text
解析 = etree.HTML(響應(yīng)數(shù)據(jù))
項(xiàng)目名稱 = 解析.xpath('//div[@class="infoLis"]//a/text()')
項(xiàng)目鏈接 = 解析.xpath('//div[@class="infoLis"]//@href')
項(xiàng)目名稱 = [項(xiàng)目名稱.strip() for 項(xiàng)目名稱 in 項(xiàng)目名稱]
項(xiàng)目鏈接 = ['http://www.jkl.com.cn/'+項(xiàng)目鏈接 for 項(xiàng)目鏈接 in 項(xiàng)目鏈接]
字典1 = dict(zip(項(xiàng)目名稱,項(xiàng)目鏈接))
for 項(xiàng)目名稱,項(xiàng)目鏈接 in 字典1.items():
項(xiàng)目名稱 = 項(xiàng)目名稱.replace('/','.')
項(xiàng)目名稱 = 項(xiàng)目名稱.replace('...', '')
路徑 = 'd:/' + 項(xiàng)目名稱
if not os.path.exists(路徑):
os.mkdir(路徑)
else:
響應(yīng)數(shù)據(jù) = requests.get(url=項(xiàng)目鏈接,headers=UA偽裝,proxies=proxies,verify=False).text
解析 = etree.HTML(響應(yīng)數(shù)據(jù))
尾頁 = 解析.xpath('//a[text()="尾頁"]/@href')
if 尾頁 != []:
正則 = re.search('\d{1,4}',尾頁[0])
頁數(shù) = 正則.group(0)
print(頁數(shù))
else:
頁數(shù) = 1
for 頁數(shù) in range(1,int(頁數(shù))+1):
響應(yīng)數(shù)據(jù) = requests.get(url=項(xiàng)目鏈接,headers=UA偽裝,proxies=proxies,verify=False).text
解析 = etree.HTML(響應(yīng)數(shù)據(jù))
文件名稱 = 解析.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('/', '.')
響應(yīng)數(shù)據(jù) = requests.get(url=文件鏈接,headers=UA偽裝,proxies=proxies,verify=False).content
后綴 = 文件鏈接.split('.')[-1]
文件路徑 = 路徑 + '/' + 文件名稱 + '.' + 后綴
# print(文件路徑)
with open(文件路徑,"wb") as 變量名:
變量名.write(響應(yīng)數(shù)據(jù))
print(文件名稱,"下載成功?。?!")