|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 文质彬彬胡汉三 于 2017-4-22 16:41 编辑
各位大佬好,小可在練習爬蟲的時候,爬取豆瓣電影TOP250,但是代碼爬取到第5頁就會出錯,天資愚笨,思來想去不明所以,懇請各位大佬指教,代碼如下:
- import requests
- from bs4 import BeautifulSoup
- def html_info(url):
- '''獲取網頁信息'''
- try:
- r = requests.get(url)
- r.raise_for_status()
- r.encoding = r.apparent_encoding
- return r.text
- except:
- return ''
-
- def print_info(all_info):
- '''打印信息'''
- count = 0 #計數器
- for movie in all_info:
- flist = 'Top{}\n電影名:{}\n電影評分:{}\n一句話影評:{}\n信息查閲:{}\n'
- count += 1
- print(flist.format(count,movie[0],movie[1],movie[2],movie[3]))
-
- def main():
- start_url = 'https://movie.douban.com/top250?start='
- depth = 11 #一共需要爬取的頁數
- all_info = [] #存儲電影信息
- for i in range(depth):
- page = str(i*25)
- url = start_url+page+'&filter=' #每一頁的URL
- soup = BeautifulSoup(html_info(url),'html.parser') #解析網頁
- for each in soup.find_all(attrs={'class':'item'}):
- m_name = each.find('span').text #電影名
- m_summary = each.find('span',attrs={'class':'inq'}).text #一句話概括
- m_info = each.a.get('href') #電影地址
- m_score = each.find('span',attrs='rating_num').text #評分
- all_info.append([m_name,m_score,m_summary,m_info])
- print_info(all_info)
- if __name__ == '__main__':
- main()
复制代码
以下為出錯(爬取到第100部電影之後,紅色標註為出錯):
Top100
電影名:爱在日落黄昏时
電影評分:8.7
一句話影評:九年后的重逢是世俗和责任的交叠,没了悸动和青涩,沧桑而温暖。
信息查閲:https://movie.douban.com/subject/1291990/
Traceback (most recent call last):
File "E:\python\爬蟲\top250.py", line 39, in <module>
main()
File "E:\python\爬蟲\top250.py", line 32, in main
m_summary = each.find('span',attrs={'class':'inq'}).text #一句話概括
AttributeError: 'NoneType' object has no attribute 'text'
另,懇請各位大佬對小可的代碼提出寶貴的意見和建議,各個方面都可以,小可不勝感激! |
|