靓汤并不限制python的结果

2024-09-29 17:16:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创作一个剧本,从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()

如您所见,它从hompage获取内容并显示链接。它起作用了,给了我链接。但是所有的链接都在给我。即使我限制了输出,它仍然显示20个链接。为什么会这样?当我把它写到文件中时,它只会在页面上打印一个链接和最旧版本的链接。在

我该如何对结果排序或将其限制在1。?在


Tags: inimport脚本urlfor链接showrequests
1条回答
网友
1楼 · 发布于 2024-09-29 17:16:38

它为每个元素提供一个a标记,因此如果您使用limit=1limit=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
..................

如果您在循环中添加一个计数和增量,您还可以验证是否有20个带有limit=1的URL和40个没有limit=1的URL。您的第一个findAll返回20个元素,每次迭代每个元素并提取a标记,这样您就得到了应该得到的内容。在

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

^{pr2}$

如果您实际上只希望第一个item-resume-info clearfix获得单个链接,那么使用find而不是findAll,.find将返回第一个.findAll返回all。在

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,页面上的第一个结果。在

相关问题 更多 >

    热门问题