Как преодолеть проблему получения ошибки 404 при попытке парсинга таблицы с сайта hh.ru для учебного проекта с использованием Python и библиотек requests и BeautifulSoup?
Для написания скрипта для сбора данных с веб-страницы с использованием Python, requests и BeautifulSoup, можно использовать следующий код: ```python import requests from bs4 import BeautifulSoup # отправляем GET-запрос к веб-странице url = 'https://www.example.com' response = requests.get(url) # парсим полученный HTML-код страницы soup = BeautifulSoup(response.text, 'html.parser') # находим нужные элементы с помощью методов BeautifulSoup title = soup.find('title').text links = soup.find_all('a') # выводим результат print(title) for link in links: print(link['href']) ``` Чтобы преодолеть проблему получения ошибки 404 при парсинге таблицы с сайта hh.ru, можно использовать следующий код: ```python import requests from bs4 import BeautifulSoup # отправляем GET-запрос к веб-странице с таблицей url = 'https://hh.ru' response = requests.get(url) # проверяем статус код ответа if response.status_code == 200: # парсим HTML-код страницы soup = BeautifulSoup(response.text, 'html.parser') # находим таблицу с помощью методов BeautifulSoup table = soup.find('table', class_='table-class') # парсим данные из таблицы for row in table.find_all('tr'): cells = row.find_all('td') for cell in cells: print(cell.text) else: print('Страница не найдена') ``` Этот код будет проверять статус код ответа при запросе к сайту hh.ru. Если статус код 200 (OK), то будет производиться парсинг таблицы и вывод данных. В противном случае будет выводиться сообщение о том, что страница не найдена.
Может ли на hh.ru стоять какая-то защита от парсинга?)
Самая примитивная, которая чекает заголовки:
import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3', 'Accept-Language': 'en-US,en;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', } res = requests.get('https://tomsk.hh.ru/article/31475', headers=headers) if res.status_code == 200: soup = BeautifulSoup(res.text, 'html.parser') el = soup.find('div', class_='URS-ratingTable') if el: print(el) else: print('Table not found!') else: print('The problem with connecting to the website', {res.status_code})