django 'set' object не имеет атрибута 'items' error - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь развернуть приложение django на AWS. Я создаю веб-сканер внутри своего приложения, используя запросы bs4 и adn. Я использовал это для получения данных с сайтов электронной коммерции. Он отлично работает на Amazon, но он выбрасывает это (см. Изображение 1), когда я пытаюсь очистить от newegg. но те же коды работают на localhost. Сначала я подумал, что это проблема с агентом пользователя, и попытался с другим агентом пользователя, но он не работает.

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

код и изображение ниже:

image1

headers = {"User-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"}
url = "https://www.newegg.com/p/pl?d="+query
data = re.get(url,headers=headers)
soup = bs4.BeautifulSoup(data.content, 'lxml')

items_container = soup.find("div", {"class":"list-wrap"})
items = items_container.find("div", {"class":"items-view"})

prdList = []
for item in items.find_all("div", {"class":"item-container"}):
    header = item.find("a", {"class":"item-title"})
    title = header.text
    link = header["href"]

    img = item.find("a", {"class":"item-img"})
    imgsrc = img.find("img")["src"]           

    price = item.find("li", {"class":"price-current"})
    if price == None:
        price = '$--'
    else:
        price = price.find("strong").text    

    prdList.append(Scraper.prdTmplt(imgsrc, title, price, link, site))

allProduct = prdList
return allProduct

Ошибка:

Environment:


Request Method: GET
Request URL: http://ec2-54-179-183-56.ap-southeast-1.compute.amazonaws.com:8000/search?sq=gaming+laptop&site_selected=newegg&sq-submit=Search

Django Version: 2.2.6
Python Version: 3.6.8
Installed Applications:
['groups.apps.GroupsConfig',
 'product_details.apps.ProductDetailsConfig',
 'scraper.apps.ScraperConfig',
 'pages.apps.PagesConfig',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/home/ubuntu/django/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/home/ubuntu/django/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/home/ubuntu/django/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/ubuntu/best-price-py/pages/views.py" in search
  29.             context['bb'] = Scraper.neweggList(search_query, site)

File "/home/ubuntu/best-price-py/scraper/scrapers.py" in neweggList
  120.         data = re.get(url)

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/api.py" in get
  75.     return request('get', url, params=params, **kwargs)

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/api.py" in request
  60.         return session.request(method=method, url=url, **kwargs)

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/sessions.py" in request
  519.         prep = self.prepare_request(req)

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/sessions.py" in prepare_request
  462.             hooks=merge_hooks(request.hooks, self.hooks),

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/models.py" in prepare
  314.         self.prepare_headers(headers)

File "/home/ubuntu/django/lib/python3.6/site-packages/requests/models.py" in prepare_headers
  446.             for header in headers.items():

Exception Type: AttributeError at /search
Exception Value: 'set' object has no attribute 'items'

1 Ответ

0 голосов
/ 24 октября 2019

заголовки, которые вы передали, отображаются как набор, а не как словарь. Посмотрите на дамп на изображении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...