YunCanyi 2021-09-03 10:50 采纳率: 50%
浏览 70
已结题

这里find_all到底怎么错了??找了半天也不知道怎么错了,各位帮帮忙吧


import requests,csv,random,bs4
csv_file= open('C:\\Users\\ke\\Desktop\\电影排名250.csv','w',newline= '')
newline = ''
writer = csv.writer(csv_file)
writer.writerow(['序号','电影名','评分','推荐语','链接'])
for x in range(10):
    url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='
    res = requests.get(url)
    bs = bs4.BeautifulSoup(res.text,'html.parser')
    bs = bs.find('ol',class_ = 'grid_view')
    for titles in bs.find_all('li'):
        num = titles.find('em',class_ = '').text
        title = titles.find('span',class_ = 'title').text
        comment = titles.find('span',class_ = 'rating_num').text
        url_movie = titles.find('a')['herf']
        if titles.find('span',class_ = 'inq') !=None:
            tes = titles.find('span',class_ = 'inq').text
            writer.writerow([num + '.' + title + '——' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie])
        else:
            writer.writerow([num + '.' + title + '——' + comment + '\n' +'\n' + url_movie])
csv_file.close()

一直提示AttributeError: 'NoneType' object has no attribute 'find_all'真没找出来哪里错了

  • 写回答

2条回答 默认 最新

  • CSDN专家-HGJ 2021-09-03 12:32
    关注

    代码中主要有两个问题:
    一是请求没有写请求头headers,没有获取到页面代码,值为None,因此后面用find或findall会报错。
    二是url_movie的节点元素获取需要改写一下。否则也为None
    解决办法:
    1.在第9行requests.get()中添加:headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0'}
    2.将16行改成:url_movie = titles.find('div',class_='hd').find_next('a')['href']

    如有帮助,请点击采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月3日