我试图使搜索谷歌与BeautifulSoup在socialnetwork django网站项目我下载它作为开源,当我试图使我收到一个错误消息无法解包不可迭代的NoneType对象
那就是search.py
从bs4导入BeautifulSoup导入请求
完成
定义Google(s):链接= []文本= []
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'
headers = {"user-agent": USER_AGENT}
r=None
if r is not None :
r = requests.get("https://www.google.com/search?q=" + s, headers=headers)
soup = BeautifulSoup(r.content, "html.parser")
for g in soup.find_all('div', class_='yuRUbf'):
a = g.find('a')
t = g.find('h3')
links.append(a.get('href'))
text.append(t.text)
return links, text
那就是view.py
延迟结果(请求):如果请求。方法==“POST”:
result = request.POST.get('search')
google_link,google_text = google(result)
google_data = zip(google_link,google_text)
if result == '':
return redirect('Home')
else:
return render(request,'results.html',{'google': google_data })
这是一个模板
{% for i,j in google %}
<a href="{{ i }}" class="btn mt-3 w-100 lg-12 md-12">{{ j }}</a><br>
{% endfor %}
我保留消息无法为google_link,google_text = google解压缩不可迭代的NoneType对象(结果)
1条答案
按热度按时间avwztpqn1#
如果对象不相同,not None将返回True。在您的示例中,r=None和**'if r is not None '*将立即被选中,因此返回False。if语句下面的所有行都不涉及。可能是因为以下原因:无法解包不可迭代的NoneType对象。因为该对象不存在。
剩下的代码都可以用了。我修改了一下,如果你的代码不起作用,就用我的。搜索词输入到表单字段中,如果成功保存表单,搜索结果将被转移到“结果”视图中。如果为空,则页面将显示: *'结果=空'**。
views.py
form.hml
results.html
urls.py
下面是我的工作方式: