我正在使用django和美丽的汤试图获得链接,但它不起作用

时间:2016-01-17 06:07:32

标签: python django beautifulsoup

我试图用美丽的汤和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小时前。提前致谢

1 个答案:

答案 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
}