我正在编写一个我在网上找到的教程中的脚本,基本上只是阅读新闻。该脚本现在编译并启动,但实际上并没有做任何事情。调试后,我发现它没有进入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
中有一个项目,但它仍然不会被循环捕获。这可能是一个非常简单的修复,但我现在看不到它。任何帮助表示赞赏。
答案 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"
。