Я пытаюсь очистить все страницы на этом сайте.Я написал этот код:
from bs4 import BeautifulSoup
import requests
import pandas as pd
import urllib
from urllib.request import urlopen
output = open('signalpeptide.txt', 'a')
for each_page in range(1,220000):
if each_page%1000 == 0: #this is because of download limit
time.sleep(5) #this is because of download limit
url = 'http://www.signalpeptide.de/index.php?sess=&m=listspdb_bacteria&s=details&id=' + str(each_page) + '&listname='
page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'html.parser')
tabs = soup.find_all('table')
pd_list = pd.read_html(str(tabs[0]))
temp_list = []
for i in range(22):
temp_list.append(str(pd_list[0][2][i]).strip())
output.write(str(temp_list[1]).strip() + '\t' + str(temp_list[3]).strip() + '\t' + str(temp_list[7]).strip() + '\t' + str(temp_list[15]).strip() + '\t')
pd_list2 = pd.read_html(str(tabs[1]))
output.write(str(pd_list2[0][0][1]) + '\t' + str(pd_list2[0][2][1]) + '\n')
Моему соединению отказывают в том, что я слишком много раз пробую URL (я знаю это, потому что, когда я запускаю код с запросами или url.request.urlopen, ошибка говорит'Максимальное количество повторных попыток превышено с помощью URL:':
requests.exceptions.ConnectionError: HTTPConnectionPool(host='www.signalpeptide.de', port=80): Max retries exceeded with url: /index.php?sess=&m=listspdb_bacteria&s=details&id=1000&listname= (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x11ebc0e48>: Failed to establish a new connection: [Errno 61] Connection refused'))
Другие методы, предложенные здесь также не работали, один из пользователей форума из этого поста предлагает мне сделать другое сообщение специально дляЭта проблема.
Я изучил scrapy, но я не совсем понимаю, как связать его с приведенным выше сценарием. Может кто-нибудь показать мне, как редактировать вышеуказанный сценарий, чтобы избежать ошибок, таких как:
urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x1114f0898>: Failed to establish a new connection: [Errno 61] Connection refused
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.signalpeptide.de', port=443): Max retries exceeded with url: /index.php?sess=&m=listspdb_bacteria&s=details&id=2&listname= (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x1114f0898>: Failed to establish a new connection: [Errno 61] Connection refused'
ConnectionRefusedError: [Errno 61] Connection refused
Я также пытался использовать urllib3:
from bs4 import BeautifulSoup
import requests
import pandas as pd
#import urllib
#from urllib.request import urlopen
import urllib3
http = urllib3.PoolManager()
output = open('signalpeptide.txt', 'a')
for each_page in range(1,220000):
if each_page%1000 == 0: #this is because of download limit
time.sleep(5) #this is because of download limit
url = 'http://www.signalpeptide.de/index.php?sess=&m=listspdb_bacteria&s=details&id=' + str(each_page) + '&listname='
page = http.request('GET',url)
soup = BeautifulSoup(page, 'html.parser')
с ошибкой:
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='www.signalpeptide.de', port=80): Max retries exceeded with url: /index.php?sess=&m=listspdb_bacteria&s=details&id=1&listname= (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x11ce6f5f8>: Failed to establish a new connection: [Errno 61] Connection refused'))
Обратите внимание, что я думаю, что при первом запуске этого скриптабудет работать, это было как раз, когда я запускал его несколько раз, когда я тестировал / писал его, теперь у меня есть его, и я знаю, что он работает. Затем он запустился для первых 400 записей, а затем я получил ошибки вышеи теперь это не позволит мнеЗапустите его вообще.
Если у кого-то есть идея, как отредактировать этот скрипт, чтобы обойти максимальное количество повторений URL-адресов, особенно помните, что я уже получаю сообщение об ошибке «Отказано в соединении», я был бы признателен.