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) # 打印所有页码信息