Как получить ссылки на страницах во время парсинга?

Как исправить ошибку "ошибки, что нет ссылки на атрибуты, NoneType" при парсинге сайта https://www.olx.pl/elektronika/komputery/laptopy/ с использованием Beautiful Soup?
  • 27 февраля 2024 г. 15:08
Ответы на вопрос 2
Для получения ссылок на страницах во время парсинга с использованием Beautiful Soup, вы можете использовать метод find_all() для поиска всех тегов <a> содержащих ссылки. Например:

```
from bs4 import BeautifulSoup
import requests

url = 'ваша ссылка'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

for link in soup.find_all('a'):
    print(link.get('href'))
```

Для исправления ошибки "ошибки, что нет ссылки на атрибуты, NoneType" при парсинге сайта https://www.olx.pl/elektronika/komputery/laptopy/ с использованием Beautiful Soup, вам необходимо проверить, что элемент, для которого вы пытаетесь получить атрибуты, существует на странице.

Вы можете добавить проверку наличия атрибута перед его получением. Например:

```
from bs4 import BeautifulSoup
import requests

url = 'https://www.olx.pl/elektronika/komputery/laptopy/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

for item in soup.find_all('a', class_='offer-wrapper'):
    link = item.get('href')
    if link:
        print(link)
```

Этот код сначала проверяет, существует ли ссылка по классу 'offer-wrapper', и только затем пытается получить атрибут 'href'. Это поможет избежать ошибки, если ссылка отсутствует.
Вот ссылка в коде сайта:

Как проверял, что она в коде сайта? Небось через браузер?

Правило первое: при ошибке записывай в файл то, что тебе прислал сервер, для последущего анализа. Может, сервер понял, что твой бот - это бот, и там "уходи, противный" вместо ожидаемой тобой страницы. А может, там динамический сайт, с контентом, подгружаемым через JS.
Похожие вопросы