笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

选择动态加载的内容

发布者: 笨鸟自学网



预渲染JavaScript

在从其他请求中获取数据的网页上,复制包含所需数据的请求是首选方法。这项工作通常是值得的:结构化的、完整的数据,最少的解析时间和网络传输。

然而,有时很难重现某些请求。或者你可能需要一些没有请求可以提供给你的东西,比如网页的屏幕截图,就像在网页浏览器中看到的那样。

在这些情况下,使用 Splash JavaScript呈现服务,以及 scrapy-splash 实现无缝集成。

splash返回为html DOM 一个网页,这样你就可以用 selectors . 它通过 configuration 或 scripting.

如果您需要Splash提供的以外的东西,例如从python代码即时与DOM交互而不是使用以前编写的脚本,或者处理多个Web浏览器窗口,您可能需要 use a headless browser 相反。

使用无头浏览器

headless browser 是一种特殊的Web浏览器,它为自动化提供API。通过安装 asyncio reactor ,则可以集成 asyncio 基于库,用于处理无头浏览器。

其中一个这样的库是 playwright-python (Python官方端口 playwright )。下面是一个简单的代码片段,用来说明它在Scrapy爬行器中的用法:

import scrapy
from playwright.async_api import async_playwright

class PlaywrightSpider(scrapy.Spider):
    name = "playwright"
    start_urls = ["data:,"]  # avoid using the default Scrapy downloader

    async def parse(self, response):
        async with async_playwright() as pw:
            browser = await pw.chromium.launch()
            page = await browser.new_page()
            await page.goto("https:/example.org")
            title = await page.title()
            return {"title": title}

但是,使用 playwright-python 与上面的示例一样,直接绕过了大多数scrapy组件(中间件、dupefilter等)。我们建议您使用 scrapy-playwright 为了更好的整合。

1234

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-12-4 15:53 , Processed in 0.019743 second(s), 17 queries .

© 2001-2020

返回顶部