Skip to main content

async-request

A lightweight network request framework based on requests & asyncio

install

pip install async_request

usage

Just like scrapy:

from async_request import AsyncSpider, Request


class MySpider(AsyncSpider):
    
    start_urls = ['https://cn.bing.com/']
    
    async def parse(self, response):
        print(response.xpath('//a/@href').get())
        yield Request('https://github.com/financialfly/async-request', callback=self.parse_github)

    def parse_github(self, response):
        yield {'hello': 'github'}
    
    async def process_result(self, result):
        # Process result at here.
        print(result)


if __name__ == '__main__':
    # Run spider
    MySpider().run()

For more detailed control (like: handle cookies, download delay, concurrent requests, max retries, logs settings etc.): (refer to the constructor of the Crawler class):

from async_request import AsyncSpider

class MySpider(AsyncSpider):
    ...

if __name__ == '__main__':
    MySpider(
        handle_cookies=True, 
        download_delay=0,
        concurrent_requests=10,
        max_retries=3,
        log_file='spider.log'
    ).run()

test

Use fetch function to get a response immediately:

from async_request import fetch


def parse():
    response = fetch('https://www.bing.com')
    print(response)
    
   
if __name__ == '__main__':
    parse()

the output will like this:

<Response 200 https://cn.bing.com/>

Use the test decorator is also a method to test spider:

import async_request as ar


@ar.test('https://www.baidu.com')
def parse(response):
    print(response.url, response.status_code)
    
    
if __name__ == '__main__':
    parse()

then run the script, you will see the result:

https://www.baidu.com/ 200

Release files for async-request 0.1888

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for async-request 0.1888
File Size Uploaded
async-request-0.1888.tar.gz 6.8 kB Details

Release files / async-request-0.1888.tar.gz

Download URL async-request-0.1888.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
23306267536c911c15f1c5f2d5b08fc2378bbcd723b915cb4c3dffb4e2cc1df8
BLAKE2b-256 checksum
How to use checksums
22f20d0bf3be4ce2bdd6b91038756f0aa12808125a22dc2e37d0f270dd19c190
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.18.4 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.33.0 CPython/3.7.2

Release history Release notifications | RSS feed

This release

0.1888 This release

1 release file

0.1887

1 release file

0.1886

1 release file

0.1885

1 release file

0.1623

1 release file

0.1622

1 release file

0.1621

1 release file

0.1619

1 release file

0.1618

1 release file

0.1617

1 release file

0.1616

1 release file

0.1615

1 release file

0.1614

1 release file

0.1613

1 release file

0.1612

1 release file

0.181

1 release file

0.162

1 release file

0.161

1 release file

0.159

1 release file

0.158

1 release file

0.157

1 release file

0.156

1 release file

0.155

1 release file

0.154

1 release file

0.153

1 release file

0.152

1 release file

0.151

1 release file

0.141

1 release file

0.18

1 release file

0.17

1 release file

0.16

1 release file

0.15

1 release file

0.14

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page