Возможно, файлы не являются pdf
Возможно, некоторые ссылки не работают или возвращают страницу перенаправления или страницу с ошибкой 404, потому что, как показывает ошибка, вы делаете запрос на файл PDF, а недействительно получить один, поэтому я предлагаю вам проверить, если файл PDF.1) Проверьте заголовки
In [19]: page = requests.get("https://www.adobe.com/support/products/enterprise/knowledgecenter/media/c4611_sample_explain.pdf")
In [20]: page.headers
Out[20]: {'Content-Type': 'application/pdf', 'Content-Length': '88226', 'Server': 'Apache', 'Strict-Transport-Security': 'max-age=86400', 'Last-Modified': 'Wed, 05 Jan 2005 19:56:38 GMT', 'Accept-Ranges': 'bytes', 'X-Adobe-Loc': 'uw2', 'X-Content-Type-Options': 'nosniff', 'Cache-Control': 'max-age=21590', 'Expires': 'Wed, 23 Jan 2019 04:53:53 GMT', 'Date': 'Tue, 22 Jan 2019 22:54:03 GMT', 'Connection': 'keep-alive'}
In [21]: page.headers['Content-Type']
Out[21]: 'application/pdf'
Таким образом, простое условие if перед сохранением файла будет отличным способом начать!Итак, вот пересмотренный код для конкретной проблемы.
lis = pd.read_csv("/home/harshit/geography/equitylist.csv") # list of all equities on BSE
for i in lis["Security Code"]:
link = "https://www.bseindia.com/bseplus/AnnualReport/"+str(i)+"/"+str(i)+"0318.pdf"
r = requests.get(link) # getting and saving annual report
if r.headers['Content-type'] == "application/pdf":
row=lis.loc[lis['Security Code'] ==i]
name = row.iloc[0]["Security Id"]
with open("reports2018incog/"+name+".pdf",'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
f.write(chunk)
time.sleep(2)
else:
print(f"Oops! Unable to process {link}")