练习提取网站电影列表,出现错误:AttributeError: 'NoneType' object has no attribute 'text',网络搜索答案未能解决,请前辈看看。源代码如下:
import requests, openpyxl
from bs4 import BeautifulSoup
wb=openpyxl.Workbook()
sheet=wb.active
sheet.title='song_name'
sheet['A1'] ='序号'
sheet['B1'] ='电影名'
sheet['C1'] ='评分'
sheet['D1'] ='推荐语'
sheet['E1'] = '链接'
headers = {
'origin':'https://movie.douban.com/',
'referer':'https://movie.douban.com/top250',
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36',
}
url='https://movie.douban.com/top250'
for x in range(2): # 提取豆瓣电影
params = {
'start':str(x*25) , # 行尾需要逗号
'filter':''
}
res = requests.get(url, headers=headers, params=params)
# print(res.status_code) # 200
bs_movie=BeautifulSoup(res.text,'html.parser')
list_movies=bs_movie.find_all('div',class_='item')
# print(list_movies)
for movie in list_movies:
number_tag=movie.find('em',class_='') # 序号(class_ 注意下划线),为空值
number=number_tag.text
title_2=movie.find('span',class_='title').text # 提取最小级标签内容(标题)
star=movie.find('span',class_='rating_num').text # 评分
inq=movie.find('span',class_='inq').text # 推荐语
url=movie.find('a')['href'] # 链接
sheet.append([number,title_2,star,inq,url])
wb.save('./scrapy/爬虫5/movie.xlsx')
wb.close()
错误提示:
# Traceback (most recent call last):
# File "c:\Users\DCL\vsc_python\scrapy\爬虫5\4.1爬电影xl_研究.py", line 35, in <module>
# number=number_tag.text
# AttributeError: 'NoneType' object has no attribute 'text'
同样的代码段,在另外的一个文件中,没有这种问题。不清楚原因。两个文件的代码,仅仅是请求参数的写法不同。另一个代码文件如下:
import requests, openpyxl
from bs4 import BeautifulSoup
wb=openpyxl.Workbook()
sheet=wb.active
sheet.title='song_name'
sheet['A1'] ='序号'
sheet['B1'] ='电影名'
sheet['C1'] ='评分'
sheet['D1'] ='推荐语'
sheet['E1'] = '链接'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for x in range(2): # 提取豆瓣电影
url='https://movie.douban.com/top250?start=' + str(x*25) + '&filter=' # 拼接爬取链接
res = requests.get(url, headers=headers)
bs_movie=BeautifulSoup(res.text,'html.parser')
list_movies=bs_movie.find_all('div',class_='item')
for movie in list_movies:
number=movie.find('em',class_='').text # 序号(class_ 注意下划线),为空值
title=movie.find('span',class_='title').text # 提取最小级标签内容(标题)
star=movie.find('span',class_='rating_num').text # 评分
inq=movie.find('span',class_='inq').text # 推荐语
url=movie.find('a')['href'] # 链接
sheet.append([number,title,star,inq,url])
wb.save('./scrapy/爬虫5/movie.xlsx')
wb.close()
print('运行结束!')
# 运行成功; header 非实际浏览器; 未用 params 参数
你这里把url重新赋值了,另外取个名字就可以了,比如:_url
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m