Skip to content
A Ruia plugin for loading javascript - pyppeteer
Branch: master
Clone or download
Latest commit 8f5456d Feb 14, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example v0.0.4 Feb 14, 2019
ruia_pyppeteer v0.0.4 Feb 14, 2019
.gitignore Init Nov 22, 2018
LICENSE
Pipfile
README.md v0.0.4 Feb 14, 2019
setup.py v0.0.4 Feb 14, 2019

README.md

ruia-pyppeteer

A Ruia plugin for loading javascript

Notice: Works on ruia >= 0.4.9

Installation

pip install ruia_pyppeteer
# New features
pip install git+https://github.com/ruia-plugins/ruia-pyppeteer

Usage

ruia_pyppeteer will load js by using pyppeteer.

You need to pay attention when you use load_js, it will download a recent version of Chromium (~100MB). This only happens once.

Load JavaScript

import asyncio

from ruia_pyppeteer import PyppeteerRequest as Request

request = Request("https://www.jianshu.com/", load_js=True)
response = asyncio.get_event_loop().run_until_complete(request.fetch())
print(response)

Complete example

from ruia import AttrField, TextField, Item

from ruia_pyppeteer import PyppeteerSpider as Spider


class JianshuItem(Item):
    target_item = TextField(css_select='ul.list>li')
    author_name = TextField(css_select='a.name')
    author_url = AttrField(attr='href', css_select='a.name')

    async def clean_author_url(self, author_url):
        return f"https://www.jianshu.com{author_url}"


class JianshuSpider(Spider):
    start_urls = ['https://www.jianshu.com/']
    concurrency = 10

    async def parse(self, response):
        async for item in JianshuItem.get_items(html=response.html):
            # Loading js by using PyppeteerRequest
            print(item)


if __name__ == '__main__':
    JianshuSpider.start()

Enjoy it :)

You can’t perform that action at this time.