代码之家  ›  专栏  ›  技术社区  ›  John

打印对象十六进制值而不是值

  •  -3
  • John  · 技术社区  · 6 年前

    使用python 3.5。

    当下面的代码打印出来时 bs.parse() 它显示对象的十六进制值,而不是 bs.parse

    我做错了什么?

    class BrickSetSpider(scrapy.Spider):
        name = "website_spider"
    
        site_search_url = 'website.com'
    
        website_base = 'http://www.websitenew.com/search?id=site:'
        start_urls = [website_base + site_search_url]
        def parse(self, response):
            website_result_list = []
            website_result_page = []
    
            NEXT_PAGE_SELECTOR = 'a.sb_pagN ::attr(href)'
            next_page = response.css(NEXT_PAGE_SELECTOR).extract_first()
            if next_page:
                yield scrapy.Request(
                    response.urljoin(next_page),
                    callback=self.parse,
            headers={'referer':self.start_urls}
                )
                website_result_page.append(response.urljoin(next_page)) 
    
            #create LIST into SET to remove duplicates then change SET back to LIST.
            set(website_result_page)
            list(website_result_page)
    
            for brp in website_result_page:   
                return("printing brp: " + brp)
    
    bs = BrickSetSpider()
    print(bs.parse('200'))
    

    返回值: <generator object BrickSetSpider.parse at 0x7f6f609c8f10>

    1 回复  |  直到 6 年前
        1
  •  0
  •   Aneesh Durg    6 年前

    这只是对对象使用通用打印函数。十六进制值是对象的内存地址。由于对象是生成器,因此可以先尝试将其强制转换为列表

    print(list(bs.parse('200')))