淡痕抹夕 发表于 2020-5-24 17:01:54

关于AttributeError: 'NoneType' object has no attribute 'text'的问题

import time
import requests
from bs4 import BeautifulSoup
import numpy as np
import pandas as pd
T=3000
template_url="https://tieba.baidu.com/f?kw=%E6%9D%91%E4%B8%8A%E6%98%A5%E6%A0%91&ie=utf-8&pn={}"
def extra_from_one_page(page_lst):
    '''从一页中提取 帖子'''
    tmp=[]
    for i in page_lst:
      if int(i.find(class_='threadlist_rep_num').text)>T:
            dic={}
            dic['num']=int(i.find(class_='threadlist_rep_num').text)
            dic['name']=i.find(class_='threadlist_title').text
            dic['address']='https://tieba.baidu.com'+i.find(class_='threadlist_title').a['href']
            tmp.append(dic)
    return tmp
def search_n_pages(n):
    print('爬取n页数据')
    target=[]
    for i in range(n):
      print('pages:',i)
      target_url=template_url.format(50*i)
      res=requests.get(target_url)
      soup=BeautifulSoup(res.text,'html.parser')
      page_lst=soup.find_all(class_='j_thread_list')
      target.extend(extra_from_one_page(page_lst))
      time.sleep(0.2)
    return target
d=search_n_pages(10)
data=pd.DataFrame(d)
data.to_excel('村上春树吧.xlsx')

这段代码是用来爬取贴吧点击量超过某一阈值的帖子的,但是运行之后第12行报错了:
AttributeError: 'NoneType' object has no attribute 'text'
请问该如何修改?

jinlovelive 发表于 2020-5-25 09:36:25

你每页的第一个爬取数据是下面这个,没有 你选择的属性<li '="" class="j_thread_list thread_top j_thread_list clearfix" data-field='{"id":1,"author_name":null,"author_nickname":null,"author_portrait":null,"first_post_id":null,"reply_num":0,"is_bakan":null,"vid":null,"is_good":null,"is_top":true,"is_protal":null,"is_membertop":null,"is_multi_forum":null,"frs_tpoint":null}' data-floor="0" data-thread-type="0" data-tid="1">
<div class="t_con cleafix">
<a class="j_thread_hidden icon_thread_hidden" data-field='{"tid":1}' href="javascript:;" rel="noreferrer" title="点击隐藏本贴"></a>
<div class="col2_left j_threadlist_li_left">
</div>
<div class="col2_right j_threadlist_li_right">
<div class="threadlist_lz clearfix">
<div class="threadlist_title pull_left j_th_tit">
<i alt="招募" class="icon-bazhurecruit" title="招募"></i>
<a class="j_th_tit" href="/bawu2/errorPage?bz=1" rel="noreferrer" target="_blank" title="本吧吧主火热招募中,点击参加">本吧吧主火热招募中,点击参加</a>
</div> </div>
</div>
</div>
</li>

page_lst.pop(0),排除这个内容就行

淡痕抹夕 发表于 2020-5-26 15:12:05

jinlovelive 发表于 2020-5-25 09:36
你每页的第一个爬取数据是下面这个,没有 你选择的属性

page_lst.pop(0),排除这个内容就行

非常感谢!
页: [1]
查看完整版本: 关于AttributeError: 'NoneType' object has no attribute 'text'的问题