Как преодолеть проблему получения ошибки 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})