b369413 2021-09-02 17:51 采纳率: 100%
浏览 203
已结题

Python报错:AttributeError: 'HomeSpider' object has no attribute 'get_page_all', 请教各位?


Traceback (most recent call last):
  File "E:\Python资料\爬取租房信息\爬取租房信息 运行6.py", line 46, in <module>
    page_all = home_spider.get_page_all(input_city)  # 获取所有页码
AttributeError: 'HomeSpider' object has no attribute 'get_page_all'
>>> 

以上是报错内容

以下是源码:


from fake_useragent import UserAgent  # 导入伪造头部信息的模块
import asyncio  # 异步io模块
import aiohttp  # 异步网络请求模块
import requests  # 导入网络请求模块
from lxml import etree  # 导入lxml解析html的模块
import pandas  # 导入pandas模块

class HomeSpider():  # 链家爬虫的类
    def __init__(self):  # 初始化
        self.data = []  # 创建数据列表
        self.headers = {"User-Agent": UserAgent().random}  # 随机生成浏览器头部信息
        
async def request(self, url):  # 异步网络请求的方法
    async with aiohttp.ClientSession() as session:  # 创建异步网络请求对象
        try:
            # 根据传递的地址发送网络请求
            async with session.get(url, headers=self.headers, timeout=3) as response:
                print(response.status)
                if response.status == 200:  # 如果请求码为200说明请求成功
                    result = await response.text()  # 获取请求结果中的文本代码
                    return result
        except Exception as e:
            print(e.args)  # 打印异常信息

def get_page_all(self, city):  # 请求一次,获取租房信息的所有页码
    city_letter = self.get_city_letter(city)  # 获取城市对应的字母
    url = 'https://{}.lianjia.com/zufang/ab200301001000rco11rt200600000001rs{}/'.format(city_letter, city)
    response = requests.get(url, headers=self.headers)  # 发送网络请求
    if response.status_code == 200:
        html = etree.HTML(response.text)  # 创建一个XPath解析对象
        # 获取租房信息的所有页码
        page_all = html.xpath('//*[@id="content"]/div[1]/div[2]/@data-totalpage')[0]
        print('租房信息总页码获取成功!')
        return int(page_all) + 1
    else:
        print('获取租房信息所有页码的请求未成功!')

# 获取北、上、广城市名称对应的字母
def get_city_letter(self, city_name):
    city_dict = {'北京': 'bj', '上海': 'sh', '广州': 'gz'}
    return city_dict.get(city_name)  # 返回城市名称对应的英文字母

if __name__ == '__main__':
    input_city = input('请输入需要下载租房信息的城市名称!')
    home_spider = HomeSpider()  # 创建爬虫类对象
    page_all = home_spider.get_page_all(input_city)  # 获取所有页码
    print(page_all)    # 打印所有页码信息
    
    

  • 写回答

2条回答 默认 最新

  • Pliosauroidea 2021-09-02 18:03
    关注

    后面那几个成员函数缩进不对,应该在class内部而不是和class同级

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 有人能看一下我宿舍管理系统的报修功能该怎么改啊?链表那里总是越界
  • ¥15 cs loadimage运行不了,easyx也下了,没有用
  • ¥15 r包runway详细安装教程
  • ¥15 Html中读取Json文件中数据并制作表格
  • ¥15 谁有RH342练习环境
  • ¥15 STM32F407 DMA中断问题
  • ¥15 uniapp连接阿里云无法发布消息和订阅
  • ¥25 麦当劳点餐系统代码纠错
  • ¥15 轮班监督委员会问题。
  • ¥20 关于变压器的具体案例分析