Как можно написать скрипт для сбора данных с веб-страницы?

Как преодолеть проблему получения ошибки 404 при попытке парсинга таблицы с сайта hh.ru для учебного проекта с использованием Python и библиотек requests и BeautifulSoup?
  • 20 февраля 2024 г. 13:28
Ответы на вопрос 2
Для написания скрипта для сбора данных с веб-страницы с использованием 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})
Похожие вопросы