Я пытаюсь почистить несколько фотографий с разных сайтов для своего класса по программированию.
Я использую Beautiful Soup и Urlib для этого.
Вот мой код
import json
import time
from urllib.request import urlopen, Request
from urllib.request import urlretrieve
import urllib.request
from bs4 import BeautifulSoup
import os
import re
site = "https://www.hollisterco.com/shop/us/guys-new-arrivals"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582"}
req = Request(url=site, headers=headers)
html = urlopen(req, timeout=30)
bs = BeautifulSoup(html, 'html.parser')
images = bs.find_all('img', {'src':re.compile('.jpg')})
count = 26
for image in images:
try:
#print(image["src"])
urlretrieve(image["src"], str(count)+".jpg")
count += 1
except:
continue
Этот код работает для некоторых веб-сайтов, например, www.vineyardvines.com работал просто хорошо, но это не работает для www.hollisterco.com, что я могу сделать, чтобы исправить это, вот ошибка, которую я получаю для hollisterco.com:
Traceback (most recent call last):
File "C:/Users/momin/PycharmProjects/scraper/scraper.py", line 22, in <module>
html = urlopen(req, timeout=30).read().decode()
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 525, in open
response = self._open(req, data)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 543, in _open
'_open', req)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 503, in _call_chain
result = func(*args)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 1360, in https_open
context=self._context, check_hostname=self._check_hostname)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\urllib\request.py", line 1320, in do_open
r = h.getresponse()
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1336, in getresponse
response.begin()
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 306, in begin
version, status, reason = self._read_status()
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1071, in recv_into
return self.read(nbytes, buffer)
File "C:\Users\momin\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 929, in read
return self._sslobj.read(len, buffer)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host