练习爬虫,出现 AttributeError,如何解决?

练习提取网站电影列表,出现错误: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