Python脚本没有进入循环

时间:2016-08-12 17:56:49

标签: python beautifulsoup raspberry-pi

我正在编写一个我在网上找到的教程中的脚本,基本上只是阅读新闻。该脚本现在编译并启动,但实际上并没有做任何事情。调试后,我发现它没有进入for循环,我不知道为什么。

import subprocess
import requests
from bs4 import BeautifulSoup
import textwrap

head = 'mpg123 -q '
tail = ' &'

url = 'http://www.ndtv.com/article/list/top-stories/'
r = requests.get(url)
soup = BeautifulSoup(r.content)

print '1'

g_data = soup.find_all("div",{"class":"natory_intro"})
log = open("/home/pi/logs/newslog.txt","w")
for item in g_data:
    print '2'
    #print >> log, item.text
    shorts = textwrap.wrap(item.text, 100)
    print '3'

    for sentance in shorts:
            print '4'
            sendthis = sentance.join(['"http://translate.google.com/translate_tts?t1=en&q=', '"'])
            print[head + sendthis + tail]
            #print subprocess.call(head + sendthis + tail, shell=True)
            print subprocess.check_output (head + sendthis + tail, shell=True)
            print '5'

g_data已加载来自网站的数据,因此g_data中有一个项目,但它仍然不会被循环捕获。这可能是一个非常简单的修复,但我现在看不到它。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

你在这一行有一个错字

g_data = soup.find_all("div",{"class":"natory_intro"})

应该是

g_data = soup.find_all("div",{"class":"nstory_intro"})

答案 1 :(得分:0)

我认为它没有进入循环,因为g_data是一个空列表。

检查网站,确保您可以按类名"natory_intro"获取项目。

我跑:

import subprocess
import requests
from bs4 import BeautifulSoup
import textwrap

head = 'mpg123 -q '
tail = ' &'

url = 'http://www.ndtv.com/article/list/top-stories/'
r = requests.get(url)
soup = BeautifulSoup(r.content)

g_data = soup.find_all("div",{"class":"natory_intro"})
print g_data

我得到了

[]

编辑:

我想这就是你想要的:

#ins_storylist > ul > li:nth-child(1) > div.new_storylising_contentwrap > div.nstory_intro

只需将"natory_intro"更改为"nstory_intro"