【问题标题】:How can I scrape this page using Scrapy and Playwright?如何使用 Scrapy 和 Playwright 抓取此页面?
【发布时间】:2023-02-17 16:10:36
【问题描述】:

我已经处理了几天,但找不到解决方案。我的输出文件为空。

请帮帮我

settings.py 文件相应于文档

谢谢

import scrapy
from scrapy.utils.response import open_in_browser
from scrapy_playwright.page import PageMethod
from scrapy.selector import Selector

class ShopSpider(scrapy.Spider):
    name = 'shop'
    
    def start_requests(self):
        yield scrapy.Request(
            url='https://www.instacart.com/store/sprouts/collections/beef', 
            callback=self.parse, 
            meta={
                'playwright': True, 
                'playwright_page_methods': [
                    PageMethod('wait_for_selector', 'ul.css-qcn8wk-LockupBLarger > li:nth-child(16)')
                ], 
                'playwright_include_page': True
            }, 
            errback=self.close_page
        )


    async def parse(self, response):
        page = response.meta['playwright_page']
        
        for i in range(32, 67, 32):
            await page.evaluate("window.scrollBy(0, document.body.scrollHeight)")
            # count = 16 * i
            await page.wait_for_selector(f'ul.css-qcn8wk-LockupBLarger > li:nth-child({i}) > div > div > div > a > div > div:nth-child(2) > h2 > span')
        s = scrapy.Selector(text=await page.content())
        await page.close()   
        for q in s.css('ul.css-qcn8wk-LockupBLarger > li > div > div > div > a > div > div:nth-child(2) > h2 > span::text').getall():
            yield {
                'title': q
                }

    async def close_page(self, failure):
        page = failure.request.meta["playwright_page"]
        await page.close()
        


【问题讨论】:

  • 也许我忽略了一些东西,但是什么“输出文件”?这只是一个从未使用过的类。请阅读how to create a minimal, verifiable example
  • 它没有刮任何东西。所以,我的输出文件(当我生成这个文件时)是空的
  • Scrapy_playwright 不适用于 Windows。
  • 我使用 linux mint 21 vanessa

标签: python scrapy playwright-python


【解决方案1】:

您收到的错误消息是什么?您使用的是什么操作系统? Playwright 最近因不在 Windows 上运行而臭名昭著。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多