Как преодолеть проблему получения ошибки 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), то будет производиться парсинг таблицы и вывод данных. В противном случае будет выводиться сообщение о том, что страница не найдена.
<blockquote>Может ли на hh.ru стоять какая-то защита от парсинга?)</blockquote> <br/> Самая примитивная, которая чекает заголовки: <br/> <pre><code class="python">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})</code></pre>