【发布时间】:2019-10-04 09:07:41
【问题描述】:
我正在https://www.accordbox.com/blog/how-crawl-infinite-scrolling-pages-using-python/学习scrapy示例
关于那里的Scrapy解决方案代码的yield Request,我很困惑。
共有三个yield 请求。有时Request 只是生成,有时它被生成并执行,有时它只是被执行。
你能告诉我它们之间有什么区别吗?
谢谢!
def parse_list_page(self, response):
next_link = response.xpath(
"//a[@class='page-link next-page']/@href").extract_first()
if next_link:
url = response.url
next_link = url[:url.find('?')] + next_link
################################
# Generate and Execute Request
################################
yield Request(
url=next_link,
callback=self.parse_list_page
)
for req in self.extract_product(response):
################################
#Just Execute Request
################################
yield req
def extract_product(self, response):
links = response.xpath("//div[@class='col-lg-8']//div[@class='card']/a/@href").extract()
for url in links:
result = parse.urlparse(response.url)
base_url = parse.urlunparse(
(result.scheme, result.netloc, "", "", "", "")
)
url = parse.urljoin(base_url, url)
################################
#Just Generate Request
################################
yield Request (
url=url,
callback=self.parse_product_page
)
def parse_product_page(self, response):
logging.info("processing " + response.url)
yield None
【问题讨论】:
-
您能否修复链接,以便我们可以看到您正在使用的示例。请求之间没有任何区别,只是蜘蛛的控制流。
-
对不起。我修复了链接。比你。
标签: python scrapy request yield