我试图用美丽的汤和django刮取数据。我正在使用B.S.与请求相结合。页面上有38个链接,但是当我尝试输出它们时只有一个显示。继承我在views.py
中的代码def sewp(request):
r = requests.get("http://www.vladtv.com/")
soup = BeautifulSoup(r.content, 'html.parser')
content = soup.find_all("a")
for link in soup.find_all("a"):
link = link.get("href")
ella = "ella"
context = {
"link": link,
"ella": ella,
}
return render(request, "posts/display_soup.html", context)
但如果我这样做
def sewp(request):
r = requests.get("http://www.vladtv.com/")
soup = BeautifulSoup(r.content, 'html.parser')
content = soup.find_all("a")
ella = "ella"
context = {
"content": content,
"ella": ella,
}
return render(request, "posts/display_soup.html", context)
所有链接显示 如何更正我的代码以使其工作?欢迎任何指导。确实没有解释如何使用B.S.的文档或教程。和Django。 我使用Django不到一个月就开始使用B.S.和请求12小时前。提前致谢
答案 0 :(得分:1)
问题在于代码的循环。每次迭代后,链接的值都会被替换。因此,在循环结束时只打印一个链接(最后一个链接)。
您需要初始化列表,然后将链接附加到其中。然后将该列表传递给上下文。
links = []
for link in soup.find_all('a'):
links.append(link.get("href"))
# Or you could simplify that loop using list comprehension:
# links = [link.get("href") for link in soup.find_all('a')]
context = {
"links": links
}