Почему URL, который я пытаюсь очистить с помощью запросов и Beautiful Soup 4, возвращает ошибку TypeError? - PullRequest
0 голосов
/ 02 мая 2020

Я следовал этому руководству о том, как создать веб-приложение для очистки с помощью Python. В частности, я пытаюсь почерпнуть результаты поиска на частом сайте покупок. Проблема в том, что, когда я подключаю этот сайт, он возвращает ошибку!

Вся функция на данный момент выглядит следующим образом:

from requests import get
from requests.exceptions import RequestException
from contextlib import closing
from bs4 import BeautifulSoup


def simple_get(url):

    try:
        with closing(get(url, stream=True)) as resp:
            if is_good_response(resp):
                return resp.content
            else:
                return None

    except RequestException as e:
        log_error('Error during requests to {0} : {1}'.format(url, str(e)))
        return None


def is_good_response(resp):

    content_type = resp.headers['Content-Type'].lower()
    return (resp.status_code == 200
            and content_type is not None
            and content_type.find('html') > -1)


def log_error(e):
    print(e)

И чтобы проверить это, у меня просто есть строки

raw_html = simple_get('https://stackoverflow.com/')
print len(raw_html)

И он успешно печатает длину каждого сайта, который я вставил, кроме того, для которого я создаю приложение! Когда я вставляю этот URL, я получаю сообщение об ошибке

TypeError: object of type 'NoneType' has no len()

URL, который вызывает у меня головную боль:

https://www.mercari.com/search/?facets=2&itemStatuses=1&keyword=loungefly&length=30&sortBy=2

1 Ответ

0 голосов
/ 02 мая 2020

Я предлагаю шаблон, который вы можете получить проще. Пожалуйста, укажите путь к драйверу Chrome.

import os
from selenium import webdriver

chromedriver = "/Users/your_account/Downloads/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)

url = 'https://www.mercari.com/search/?facets=2&itemStatuses=1&keyword=loungefly&length=30&sortBy=2'
driver.get(url)

# driver.quit()
...