This release is a pre-release and may not be stable for production use.
Python Web Robot Builder
The main idea of py-robot is to simplify the code, and improve the performance of web crawlers.
Install
pip install ciag-robot
Intro
Bellow we have a simple example of crawler that needs to get a page, and for each specific item get another page. Because it was written without the use of async requests, it will make a request and make the another one only when the previous has finished.
# examples/iot_eetimes.py
import requests
import json
from lxml import html
from pyquery.pyquery import PyQuery as pq
page = requests.get('https://iot.eetimes.com/')
dom = pq(html.fromstring(page.content.decode()))
result = []
for link in dom.find('.theiaStickySidebar ul li'):
news = {
'category': pq(link).find('span').text(),
'url': pq(link).find('a[href]').attr('href'),
}
news_page = requests.get(news['url'])
dom = pq(news_page.content.decode())
news['body'] = dom.find('p').text()
news['title'] = dom.find('h1.post-title').text()
result.append(news)
print(json.dumps(result, indent=4))
We can rewrite that using py-robot, and it will look like that:
# examples/iot_eetimes2.py
import json
from robot import Robot
from robot.collector.shortcut import *
import logging
logging.basicConfig(level=logging.DEBUG)
collector = pipe(
const('https://iot.eetimes.com/'),
get(),
css('.theiaStickySidebar ul li'),
foreach(dict(
pipe(
css('a[href]'), attr('href'), any(),
get(),
dict(
body=pipe(css('p'), as_text()),
title=pipe(css('h1.post-title'), as_text()),
)
),
category=pipe(css('span'), as_text()),
url=pipe(css('a[href]'), attr('href'), any(), url())
))
)
with Robot() as robot:
result = robot.sync_run(collector)
print(json.dumps(result, indent=4))
Now all the requests will be async, so it will start all the requests for each item at the same time, and it will improve the performance of the crawler.
Release files for ciag-robot 0.4.dev1610168567
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ciag-robot-0.4.dev1610168567.tar.gz | 14.7 kB | Details |
Release files / ciag-robot-0.4.dev1610168567.tar.gz
| Download URL | ciag-robot-0.4.dev1610168567.tar.gz |
|---|---|
| Size | 14.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26a8d36c569309522f4dd6ac333b7d9f649dcc87ed26c1495f00caddb84a8a41
|
|
BLAKE2b-256 checksum How to use checksums |
859256f3f0fd5c5904d578ec8d47ecc7f3eae4c8a0cb4336783babd61b0bb0e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.7.9
|