gpt4 book ai didi

python - BeautifulSoup 不限制Python的结果

转载 作者:太空宇宙 更新时间:2023-11-03 17:35:00 24 4
gpt4 key购买 nike

我正在创建一个脚本来从 funimation 获取新剧集。所以,我写了这个简单的脚本。

import requests
from bs4 import BeautifulSoup
import subprocess



r = requests.get('http://www.funimation.com/videos/episodes')
soup = BeautifulSoup(r.text)
print soup.title
subtitles = soup.findAll('div',{'class':'item-resume-info clearfix'})
for show in subtitles:
x = show.find_all('a', limit=1)
for a in x:
url = a['href']
file = open("LatestLink.txt", "w")
file.write(url)
file.close()

如您所见,它从主页获取内容并向我显示链接。它正在工作并为我提供了链接。但是,它为我提供了所有链接。尽管我限制了输出,但它仍然显示 20 个链接。为什么会发生这种情况?当我将其写入文件时,它仅在其页面上打印一个链接和最旧版本的链接。

如何对结果进行排序或将结果限制为 1?

最佳答案

它给你一个a每个元素的标签,这样你就不会得到所有你可以看到的,如果你 print(len(x))limit=1没有:

In [29]: for show in subtitles:
....: x = show.find_all('a',limit=1)
....: print(len(x))
....:
1
1
1
1
1
1
.............

In [30]: for show in subtitles:
x = show.find_all('a')
print(len(x))
....:
2
2
2
2
2
2
2
2
..................

如果您在循环中添加计数和增量,您还可以通过 limit=1 验证是否获得了 20 个网址。和 40 没有。您的第一个 findAll 返回 20 个元素,您迭代每个元素并提取 a每次都进行标记,以便您准确地获得应有的结果。

对于您的文件问题,您在文件中只能看到一个链接,因为您不断使用 w 覆盖 ,在循环外打开文件一次:

with  open("LatestLink.txt", "w") as f:
for show in subtitles:
x = show.find_all('a', limit=1)
for a in x:
url = a['href']
f.write(url)

如果你实际上只想要第一个 item-resume-info clearfix要获取单个链接,请使用 find 而不是 findAll,.find将返回第一个.findAll返回全部。

subtitles = soup.find('div', {'class': 'item-resume-info clearfix'})
with open("LatestLink.txt", "w") as f:
url = subtitles.a["href"]
f.write(url)

返回 http://www.funimation.com/shows/chaos-dragon/videos/official/antinomy ,页面上的第一个结果。

关于python - BeautifulSoup 不限制Python的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31321533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com