爬虫精进第3关常见问题
问题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://shimo.im/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'
赞 (0)