【发布时间】:2022-09-28 04:04:07
【问题描述】:
我在 Django 和 bs4 中创建了一个搜索引擎,它从 Ask.com 搜索引擎中抓取搜索结果。我想当 Django 从 Ask 获取搜索结果时,它会检查 X-Frame-Options 标头的值,以便根据条件的结果为我的 notAccept 布尔值提供一个值。
我从 Django 文档的this page 和this other page 中获得灵感,在测试了建议的答案后,我修改了我的代码,如下所示:
for result in result_listings:
result_title = result.find(class_=\'PartialSearchResults-item-title\').text
result_url = result.find(\'a\').get(\'href\')
result_desc = result.find(class_=\'PartialSearchResults-item-abstract\').text
res = requests.get(result_url)
#for header in final_result[1]:
response = res.headers[\'content-type\':\'X-Frame-Options\'] #the error is generated here
if response in [\"DENY\", \"SAMEORIGIN\"]:
head = True
notAccept = bool(head)
但是当我测试时,我在终端中出现以下错误:
Internal Server Error: /search
Traceback (most recent call last):
File \"C:\\Python310\\lib\\site-packages\\django\\core\\handlers\\exception.py\", line 55, in inner
response = get_response(request)
File \"C:\\Python310\\lib\\site-packages\\django\\core\\handlers\\base.py\", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File \"C:\\Users\\user\\Documents\\AAprojects\\Whelpsgroups1\\searchEngine\\search\\views.py\", line 32, in search
response = res.headers[\'content-type\':\'X-Frame-Options\']
File \"C:\\Python310\\lib\\site-packages\\requests\\structures.py\", line 54, in __getitem__
return self._store[key.lower()][1]
AttributeError: \'slice\' object has no attribute \'lower\'
[26/Sep/2022 22:57:24] \"GET /search?csrfmiddlewaretoken=1m8mRf9JWoHvzps2AemMyA7Wlb76PVzQ5UzuEtfH1p3PzwmZfqLlBHTkCvIDlot6&search=moto HTTP/1.1\" 500 93598
此错误与代码中指定的以下行有关。
response = res.headers[\'content-type\':\'X-Frame-Options\'] #the error is generated here
我像这样修改了这一行:
response = res.headers[\'X-Frame-Options\']
但现在我收到以下错误:
Traceback (most recent call last):
File \"C:\\Python310\\lib\\site-packages\\django\\core\\handlers\\exception.py\", line 55, in inner
response = get_response(request)
File \"C:\\Python310\\lib\\site-packages\\django\\core\\handlers\\base.py\", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File \"C:\\Users\\user\\Documents\\AAprojects\\Whelpsgroups1\\searchEngine\\search\\views.py\", line 32, in search
response = res.headers[\'X-Frame-Options\'] #the error is generated here
File \"C:\\Python310\\lib\\site-packages\\requests\\structures.py\", line 54, in __getitem__
return self._store[key.lower()][1]
KeyError: \'x-frame-options\'
我在this page 上寻找解决方案,但找不到太多。
我不知道如何解决这个问题。我必须承认,我不太擅长处理标题。谢谢!
-
我不明白你在哪里搜索这些值。你应该搜索
res.headers -
在 Python 中,
if使用or代替|,and代替&,not代替! -
始终将有问题的完整错误消息(从单词 \"Traceback\" 开始)(不在 cmets 中)作为文本(不是屏幕截图,不链接到外部门户)。完整的错误/回溯中还有其他有用的信息。
-
如果您有不同数量的
(和),您可能会收到有关(的消息
标签: python django http-headers