Я пытаюсь развернуть приложение 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'