问题1.豆瓣电影无评论 豆瓣这一关的练习过程中,豆瓣网站的电影是不断更新的,有些豆瓣电影会出现没有评论语的情况: 报错信息“AttributeError: 'NoneType' object has no attribute 'text' ” 解决方案:用try...except来判断 自动检测import requests # 引用requests模块 from bs4 import BeautifulSoup a = [] for x in range(10): headers = { 'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36' # 标记了请求从什么设备,什么浏览器上发出 } url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter=' res = requests.get(url,headers=headers) bs = BeautifulSoup(res.text, 'html.parser') book_list = bs.find('div',class_='article').find_all('li') for book in book_list: try: num = book.find('em').text name = book.find('span',class_='title').text score = book.find('span',class_='rating_num').text comment = book.find('span',class_='inq').text movieurl=book.find('a')['href'] a.append([num,name,score,comment,movieurl]) except: num = book.find('em').text name = book.find('span', class_='title').text score = book.find('span', class_='rating_num').text comment = '没有评论语' movieurl=book.find('a')['href'] a.append([num, name, score, comment,movieurl]) print(a) 问题2.豆瓣电影在课堂的服务器运行出现Nonetype报错 https:///docs/QWQJYGw8CtcwQwyq/ 《豆瓣250爬虫思路详解》 豆瓣电影在课堂的服务器运行出现Nonetype报错;豆瓣这里由于太多同学用课程ip访问豆瓣,豆瓣限制了ip,你可以打印一下状态码看看,本地运行就可以了哦,课程可以先空代码运行通过,本地练习或者学习后面知识哦! 本地运行需要加上请求头伪装哈!第5关会学习到请求头!请先跳过这个练习,学完第5关再回头做这个练习! 问题3.在课内实操提取菜名时是如何判定【17:-13】是多余信息? 可以去掉这个[17:-13】,然后自己数一下菜名的位置来切片,这个知识点实际上就是字符串的切片,-13就是倒数第13个位置开始截取;从左数是0,1,2开始,从右数是-1-2-3数,课程为了方便阅读,通过自己数着把空格切除了,当然也可以用replace(' ','')来去空格,或者strip函数,name = tag_a.text.strip() ;方法有很多种,不必纠结于这个~ 把代码导出到一个txt文件里,数<>两侧的空格 自动检测#怎么数? temp = 1 for i in 字符串: print(temp,i) temp+=1 问题4.作业爬电影中文乱码: 这个网站是用中文编码书写的,你可以在网页的源码中ctrl+f,搜索charset查看网页编码,这种情况你需要修改网页的编码格式~ 自动检测res = requests.get(url) res.encoding ='gbk'
|