【发布时间】:2018-04-24 22:39:01
【问题描述】:
使用 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>
【问题讨论】:
-
你的
parse()方法是一个生成器函数,因为它使用yield,所以你看到的是正确的。如果您想查看它产生的值,请在for循环中使用它来查看每个值,将其转换为列表(即results = bs.parse('200')。
标签: python python-3.x output