A high-level Web Crawling and Web Scraping framework based on Asyncio
Project description
aio-scrapy
An asyncio + aiolibs crawler imitate scrapy framework
English | 中文
Overview
- aio-scrapy framework is base on opensource project Scrapy & scrapy_redis.
- aio-scrapy implements compatibility with scrapyd.
- aio-scrapy implements redis queue and rabbitmq queue.
- aio-scrapy is a fast high-level web crawling and web scraping framework, used to crawl websites and extract structured data from their pages.
- Distributed crawling/scraping.
Requirements
- Python 3.7+
- Works on Linux, Windows, macOS, BSD
Install
The quick way:
pip install aio-scrapy -U
Usage
create project spider:
aioscrapy startproject project_quotes
cd project_quotes
aioscrapy genspider quotes
quotes.py
from aioscrapy.spiders import Spider
class QuotesMemorySpider(Spider):
name = 'QuotesMemorySpider'
start_urls = ['https://quotes.toscrape.com']
async def parse(self, response):
for quote in response.css('div.quote'):
yield {
'author': quote.xpath('span/small/text()').get(),
'text': quote.css('span.text::text').get(),
}
next_page = response.css('li.next a::attr("href")').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
if __name__ == '__main__':
QuotesMemorySpider.start()
run the spider:
aioscrapy crawl quotes
create single script spider:
aioscrapy genspider single_quotes -t single
single_quotes.py:
from aioscrapy.spiders import Spider
class QuotesMemorySpider(Spider):
name = 'QuotesMemorySpider'
custom_settings = {
"USER_AGENT": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
# 'DOWNLOAD_DELAY': 3,
# 'RANDOMIZE_DOWNLOAD_DELAY': True,
# 'CONCURRENT_REQUESTS': 1,
# 'LOG_LEVEL': 'INFO'
}
start_urls = ['https://quotes.toscrape.com']
@staticmethod
async def process_request(request, spider):
""" request middleware """
return request
@staticmethod
async def process_response(request, response, spider):
""" response middleware """
return response
@staticmethod
async def process_exception(request, exception, spider):
""" exception middleware """
pass
async def parse(self, response):
for quote in response.css('div.quote'):
yield {
'author': quote.xpath('span/small/text()').get(),
'text': quote.css('span.text::text').get(),
}
next_page = response.css('li.next a::attr("href")').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
async def process_item(self, item):
print(item)
if __name__ == '__main__':
QuotesMemorySpider.start()
run the spider:
aioscrapy runspider quotes.py
more commands:
aioscrapy -h
Documentation
Ready
please submit your sugguestion to owner by issue
Thanks
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aio-scrapy-1.1.0.tar.gz
(87.3 kB
view details)
Built Distribution
aio_scrapy-1.1.0-py3-none-any.whl
(123.0 kB
view details)
File details
Details for the file aio-scrapy-1.1.0.tar.gz
.
File metadata
- Download URL: aio-scrapy-1.1.0.tar.gz
- Upload date:
- Size: 87.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a79a602a394c40533e915d8e7b97c0340c9f2899c2b57cfb17d1b3cc8e280120 |
|
MD5 | 8d9ad09b7deaf7412ad6c17a90782057 |
|
BLAKE2b-256 | e77ccc974e2ac19690e6fb8b46aac6f1ee0ec3c40c3b85639ca08d6746111507 |
File details
Details for the file aio_scrapy-1.1.0-py3-none-any.whl
.
File metadata
- Download URL: aio_scrapy-1.1.0-py3-none-any.whl
- Upload date:
- Size: 123.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 24efdae60ab0bec77c8e82571834ac7bb0b2e9d0f86c565fb3826e3b261c84c7 |
|
MD5 | 152753e0b741ecd064cb867eba32b9a4 |
|
BLAKE2b-256 | 30d6f9f6f299b71d0d7a55e5c205b9dfd91f39b352fd066031b87c3667a8aa89 |