function object has no attribute xmlparser

问提来了这个attributeerror要怎么解决

python3.76

pycharm2020.3.5

# -*-coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd

import re

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'keep-alive'
}

xingzhengqu_cn = ['锦江', '青羊', '武侯', '高新', '成华', '金牛', '天府新区', '高新西', '双流', '温江', '郫都', '龙泉驿', '新都', '彭州', '简阳', '青白江', '都江堰', '天府新区南区', '邛崃', '大邑', '蒲江', '新津', '金堂', '崇州']
xingzhengqu = ['jinjiang', 'qingyang', 'wuhou', 'gaoxin7', 'chenghua', 'jinniu', 'tianfuxinqu', 'gaoxinxi1', 'shuangliu', 'wenjiang', 'pidou', 'longquanyi', 'xindou', 'pengzhou', 'jianyang', 'qingbaijiang', 'doujiangyan', 'tianfuxinqunanqu', 'qionglai', 'dayi', 'pujiang', 'xinjin', 'jintang', 'chongzhou1']


def get_url(url, page):  # url为区域名,page为页码
    # 获取网站所有源码
    html = requests.get(url + '/pg%s' % str(page), headers=headers).text
    # 获取每一条租房信息
    table = BeautifulSoup(html, 'lxml').find('div', {'class': 'con-box'}).find_all('li', {'data-el': 'zufang'})
    # 再定义一个变量,用以查找每个行政区最大的页码数
    table_2 = BeautifulSoup(html, 'lxml')
    # 使用正则找到最大页码数
    pattern = re.compile('"totalPage":(.*?),".*?')
    last_page = re.findall(pattern, str(table_2))
    # 下面三个信息直接用bs4不方便,故使用正则来查找
    pattern_mianji = re.compile("(.*?)平米.*?")
    pattern_quyu = re.compile("(.*?)租房")
    pattern_updatetime = re.compile("(.*?)\s更新")
    # 这里用字典存储所有的信息
    result = []
    # 循环,以获取当页每一条租房信息的所有信息
    for li in table:
        # item存储每一条租房的所有信息
        item = dict()
        item[u'网站'] = li.find('a').get('href')
        item[u'房屋描述'] = li.find('img').get('alt')
        item[u'小区'] = li.find('div', {'class': 'where'}).find('a').get_text().replace('\xa0', '')
        item[u'房型'] = li.find('div', {'class': 'where'}).find_all('span')[1].get_text().replace('\xa0', '')
        item[u'面积'] = re.findall(pattern_mianji, li.find('div', {'class': 'where'}).find_all('span')[3].get_text())[0]
        item[u'朝向'] = li.find('div', {'class': 'where'}).find_all('span')[4].get_text()
        item[u'地区'] = re.findall(pattern_quyu, li.find('div', {'class': 'other'}).find('a').get_text())[0]
        item[u'楼层'] = li.find('div', {'class': 'con'}).get_text().split('/')[1]
        item[u'年限'] = li.find('div', {'class': 'con'}).get_text().split('/')[2]
        item[u'价格'] = li.find('div', {'class': 'price'}).find('span', {'class': 'num'}).get_text()
        item[u'更新时间'] = re.findall(pattern_updatetime, li.find('div', {'class': 'price-pre'}).get_text())[0]
        item[u'看房人数'] = li.find('div', {'class': 'square'}).find('span', {'class': 'num'}).get_text()
        result.append(item)
    # 返回所有租房信息与最大页码
    return result, last_page

def get_quyu_data(area, x):  # area为行政区中文名,x是英文名,也就是网址后缀
    url = "https://cd.lianjia.com/zufang/%s" % area
    page = 1
    # 从第一个函数获取最大页码
    last_page = get_url(url, page)[1]
    # 定义一个空的DataFrame
    df = pd.DataFrame()
    # 一直循环,直到页码达到最大,跳出
    while True:
        try:
            result = get_url(url, page)[0]
        except:
            print("failed")
            break
        df = df.append(pd.DataFrame(result))
        page += 1
        if page > int(''.join(last_page)):
            break
    df['区域'] = '%s' % x
    return df

def main():
    # 根据自己的需要将DataFrame列排序
    column = ['房屋描述', '区域', '地区', '小区', '房型', '面积', '楼层', '朝向', '价格', '年限', '更新时间', '看房人数', '网站']
    frame = pd.DataFrame()
    for i in range(len(xingzhengqu)):
        quyu = get_quyu_data(xingzhengqu[i], xingzhengqu_cn[i])
        frame = frame.append(quyu)
    # 列排序
    frame = frame.reindex(columns=column)
    # 因为每一个区域的索引都是从1开始,所以重新设置索引
    frame.index = range(len(frame))
    frame.to_csv("lianjia_guangzhou.csv")

if __name__ == '__main__':
    main()

就这个attributeerror不知道该如何修改,是哪里的代码需要修改吗

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不要将python代码文件命名为python预留字,模块名等。
原因
python代码在编译后会生成以pyc为文件名后綴的字节码文件,该字节码文件会经过python解释器来生成机器码文件来运行。当再次运行python文件时,解释器会直接调用该pyc的字节码文件运行直到py文件发生改变(解释器运行时会对比pyc的生成时间和py的修改时间)

 

这种问题一般是自己定义的py文件的名称跟引用的模块名有冲突,检查一下目录下是否有自己定义的特殊名字的py文件,修改py文件名即可。