Падает парсер, выдает requests.exceptions.ConnectionError. Как исправить?
Код выдает ошибки, обработать не получается. Подскажите, как решить задачу, пожалуйста. Вот код:
headers = {
"Accept": "*/*",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0"}
first_links = []
for i in range(1, 10):
url = 'https://krs-pobierz.pl/szukaj?q=4110Z&page={}'.format(i)
while True:
try:
r = requests.get(url, headers)
except requests.exceptions.ConnectionError:
time.sleep(2)
continue
soup = BeautifulSoup(r.text, 'lxml')
boxes = soup.find_all('div', class_='col-9')
for l in boxes:
links = l.find('a').get('href')
while True:
try:
q = requests.get(links)
except requests.exceptions.ConnectionError:
time.sleep(2)
continue
result = q.content
soup = BeautifulSoup(result, 'lxml')
try:
kved_text = soup.find_all('td', class_='col-xs-8')[13].text
except IndexError as ex:
kved_text = '-'
if(kved_text == 'Realizacja projektów budowlanych związanych ze wznoszeniem budynków (4110Z)'):
first_links.append(links)
else:
continue
with open('first_links.txt', 'a') as f:
for line in first_links:
f.write(f'{line}\n')
Ответы (1 шт):
Автор решения: Namerek
→ Ссылка
pip install fake-useragent requests tqdm
from tqdm import tqdm
from requests import Session
from fake_useragent import UserAgent
from bs4 import BeautifulSoup as Soup
import re
ua = UserAgent()
s = Session()
s.headers.update(
{
'User-Agent': ua.random
}
)
urls = []
for i in range(1, 10):
response = s.get(
'https://krs-pobierz.pl/szukaj',
params={
'q': '4110Z',
'page': i
}
)
if not response.ok:
print(response.status_code)
continue
soup = Soup(
response.content,
'html.parser'
)
search_area = soup.find('div', {'class': 'search-result'})
urls += map(lambda x: x.get('href'), search_area.find_all('a'))
def filter_links(url):
page_response = s.get(url)
page_soup = Soup(page_response.content, 'html.parser')
res = page_soup.find('td', class_='col-xs-8', text=re.compile(r'^.*?\(4110Z\).*$', flags=re.S))
return res is not None
useful_links = []
for link in tqdm(urls):
if filter_links(link):
useful_links.append(
link
)
# 100%|██████████| 270/270 [01:14<00:00, 3.61it/s]
useful_links
['https://krs-pobierz.pl/budownictwo-ogolnoladowe-krzyszkowscy-spolka-z-ograniczona-odpowiedzialnoscia-spolka-komandytowa-i242025',
'https://krs-pobierz.pl/upk-invest-spolka-z-ograniczona-odpowiedzialnoscia-i434695',
'https://krs-pobierz.pl/wlasnosciowa-spoldzielnia-mieszkaniowa-pracownikow-krajowej-agencji-wydawniczej-prasa-ksiazka-ruch-kawka-w-likwidacji-i262044',
'https://krs-pobierz.pl/gsg-group-spolka-z-ograniczona-odpowiedzialnoscia-i7170838',
'https://krs-pobierz.pl/jm-bygg-service-spolka-z-ograniczona-odpowiedzialnoscia-i47692',
'https://krs-pobierz.pl/spoldzielnia-budowlano-mieszkaniowa-srodmiescie-i134163',
'https://krs-pobierz.pl/spoldzielnia-mieszkaniowa-im-aleksandra-fredry-i111984',
'https://krs-pobierz.pl/atm-exchange-spolka-z-ograniczona-odpowiedzialnoscia-i294977',
'https://krs-pobierz.pl/madison-capital-spolka-z-ograniczona-odpowiedzialnoscia-i7211652']
Вероятнее всего ошибка происходит из-за того, что Вы для каждого запроса используете
requests.getчто сосздает отдельную сессию для каждого запроса. Для парсинга целесообразней использоватьSession