mimi5211 2024-01-02 22:08 采纳率: 50%
浏览 4
已结题

python 爬虫程序报错


"""使用面向对象的方式,搭建项目框架"""
import requests


class LianJiaSpider:
   # 初始化方法
   def __int__(self):
       # 初始化请求
       self.url = 'https://bj.lianjia.com/chengjiao/pg{0}/'
       # 用于将爬虫程序伪装成浏览器
       self.headers = {
           'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
           'Accept-Language': 'zh-CN,zh;q=0.9',
           'Cache-Control': 'no-cache',
           'Connection': 'keep-alive',
           #'Cookie': 'select_city=110000; lianjia_uuid=ac5c20ae-9d05-4262-ae27-15dc34e9eeeb; crosSdkDT2019DeviceId=402xwx--chkhq4-nrhkvy30lr8gl6y-8etmk4eqp; _smt_uid=6593fc4d.45d49d47; _jzqc=1; _jzqckmp=1; _qzjc=1; sajssdk_2015_cross_new_user=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2218cca1191473e-0c8353e9321003-26001951-1049088-18cca119148d13%22%2C%22%24device_id%22%3A%2218cca1191473e-0c8353e9321003-26001951-1049088-18cca119148d13%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_referrer%22%3A%22%22%2C%22%24latest_referrer_host%22%3A%22%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%7D%7D; _ga=GA1.2.1710180456.1704197200; _gid=GA1.2.727069856.1704197200; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1704197224; lianjia_ssid=0cc43c96-e0d5-93ff-f908-f0facac4b35a; _jzqa=1.4387708076102743600.1704197198.1704197198.1704200152.2; _jzqx=1.1704200152.1704200152.1.jzqsr=bj%2Elianjia%2Ecom|jzqct=/ershoufang/pg2rs%e5%8c%97%e4%ba%ac/.-; login_ucid=2000000392130457; lianjia_token=2.001391bb71406bb904023c92406eb23510; lianjia_token_secure=2.001391bb71406bb904023c92406eb23510; security_ticket=Ki08vdsnkoKfgvg391Td6mqfwJypq0m7I8lottXg5vqZwCsuprTtDr+D7JuHKbGgO3Bl2Reb1phqA+v1a3KpUXM0ig7uDX16xuX2wLYbZliXq9k5/YoPfGiKYE5y2eM89dA2fmle2yy9qRjaTsmiexUd6UR71SybK2yKQ11HLLM=; ftkrc_=080a0576-d8b2-4853-8a62-c8bf48afc580; lfrc_=5a866a6c-c4c4-43d9-a2e0-9a276e6ef8eb; Hm_lpvt_9152f8221cb6243a53c83b956842be8a=1704200222; _qzja=1.858033891.1704197198131.1704197198131.1704200152267.1704200209828.1704200222307.0.0.0.8.2; _qzjb=1.1704200152267.3.0.0.0; _qzjto=8.2.0; _jzqb=1.3.10.1704200152.1; srcid=eyJ0Ijoie1wiZGF0YVwiOlwiM2RiNWM1ZDNjMWRhM2E4NDEwMjkyYjVkN2RhNDA5ZTM4Y2Q2OTg4ODE2NWRlODU0MGIxYTA0OTFmNTA1M2M5YTY0MGJlNjRjNjVhMGUzNGU0YWQ1ZmZiYTIwNmQ3ODNmNGI0ZmJlZDhmYThiZDk2ZTZjMDAyNDY3N2Y4YTM4ZDNlYWI0MjY5MDQ3MmRlMDQ1MDcwMzZjMDQzNzFkNmQ0NzljNmJhNTdkNjM3YjQzYjY3YzUxZWMyZWVmZGM5MGEzNjlhMTMzMDQ5YTJjMzdjMjc4ZmRkMmVlN2I5MDUxYWE2YTAwYzJlOGI3MzkyYzE0NjYxNmJhNDVlMTc0NDMzYlwiLFwia2V5X2lkXCI6XCIxXCIsXCJzaWduXCI6XCI3YzVjZGZlOVwifSIsInIiOiJodHRwczovL2JqLmxpYW5qaWEuY29tL2NoZW5namlhby9wZzIvIiwib3MiOiJ3ZWIiLCJ2IjoiMC4xIn0=; _gat=1; _gat_past=1; _gat_global=1; _gat_new_global=1; _gat_dianpu_agent=1; _ga_KJTRWRHDL1=GS1.2.1704200154.2.1.1704200223.0.0.0; _ga_QJN1VP0CMS=GS1.2.1704200154.2.1.1704200223.0.0.0',
           'Pragma': 'no-cache',
           'Sec-Fetch-Dest': 'document',
           'Sec-Fetch-Mode': 'navigate',
           'Sec-Fetch-Site': 'none',
           'Sec-Fetch-User': '?1',
           'Upgrade-Insecure-Requests': '1',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
           'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
           'sec-ch-ua-mobile': '?0',
           'sec-ch-ua-platform': '"Windows"',
       }

       # response = requests.get('https://bj.lianjia.com/chengjiao/pg2/', cookies=cookies, headers=headers)

   # 发送请求的方法
   def send_requests(self,url):
       resp = requests.get(url, headers=self.headers)
       if resp.status_code == 200:
           return resp

   # 解析HTML获取有用数据
   def parse_content(self):
       pass

   # 写入数据库
   def write_mysql(self):
       pass

   def start(self):
       for i in range(1,2):
           full_url = self.url.format(i)
           print(full_url)
           #resp = self.send_requests(full_url)
           #print(resp.text)


if __name__ == '__main__':
   lianjia = LianJiaSpider()
   lianjia.start()

###########报错#############

full_url = self.url.format(i)

AttributeError: 'LianJiaSpider' object has no attribute 'url'



  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-02 22:12
    关注

    引自免费微信小程序:皆我百晓生

    您好!根据您提供的代码和报错信息,问题是LianJiaSpider对象没有url属性。这是因为在LianJiaSpider的初始化方法中,__int__应该是__init__,所以初始化方法没有被正确调用,导致url没有被赋值。

    请修改__int____init__,代码如下:

    class LianJiaSpider:
        # 初始化方法
        def __init__(self):
            # 初始化请求
            self.url = 'https://bj.lianjia.com/chengjiao/pg{0}/'
            # 用于将爬虫程序伪装成浏览器
            self.headers = {
                ...
    

    这样修改后再运行程序,应该就可以解决报错了。希望对您有帮助!如果还有其他问题,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 赞助了问题酬金15元 1月2日
  • 创建了问题 1月2日