python爬虫 为何for循环语句无法输出

请问下面这段代码,输出时只显示第一排中文标题,然后就停止了,本人小白,,刚学,很多不懂,大虾求解


import urllib2
import re
from bs4 import BeautifulSoup

def crawl(url):
    page = urllib2.urlopen(url)
    contents = page.read()
    soup = BeautifulSoup(contents)
    print(u' 豆瓣电影TOP250:\n 序号 \t影片名\t 评分 \t评价人数 \t 链接 ')
    for tag in soup.find_all('tr', class_='item'):
    #print tag
        m_order = int(tag.find('td', class_='m_order').get_text())
        m_name = tag.a.get_text()
        m_year = tag.span.get_text()
        m_rating_score = float(tag.em.get_text())
        m_rating_num = int(tag.find(headers="m_rating_num").get_text())
        m_url=str(tag.find('a')).split('"')[1]
        #print m_url

       print("%s %s %s %s %s %s " % (m_order, m_name, m_year, m_rating_score, m_rating_num,m_url)) 
if name == 'main':
crawl('http://movie.douban.com/top250?format=text')
阅读 4.1k
1 个回答

不是停止了,是没有更多的输出了。
为什么没有输出了?soup.find_all('tr', class_='item'):没有tr标签并且class是item的啊。

打开http://movie.douban.com/top250?format=text,好好看下sourcecode吧。

import urllib.request
import re
from bs4 import BeautifulSoup

def crawl(url):
    page = urllib.request.urlopen(url)
    contents = page.read()
    soup = BeautifulSoup(contents)
    print(u' 豆瓣电影TOP250:\n 序号 \t影片名\t 评分 \t评价人数 \t 链接 ')
    for tag in soup.find_all('div', class_='item'):
        m_order = int(tag.find('div', class_='pic').em.get_text())
        m_name = tag.find('span',class_='title').get_text()
        print(m_order,m_name)

if __name__ == '__main__':
    crawl('http://movie.douban.com/top250?format=text')
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题