github 地址: https://github.com/gaojiuli/gain/
gain 是为了让每大家能够轻松编写 python 爬虫, 它使用了 asyncio, uvloop 和 aiohttp.
pip install gain
Write spider.py:
from gain import Css, Item, Parser, Spider
class Post(Item):
    title = Css('.entry-title')
    content = Css('.entry-content')
    async def save(self):
        with open('scrapinghub.txt', 'a+') as f:
            f.writelines(self.results['title'] + '\n')
class MySpider(Spider):
    start_url = 'https://blog.scrapinghub.com/'
    parsers = [Parser('https://blog.scrapinghub.com/page/\d+/'),
               Parser('https://blog.scrapinghub.com/\d{4}/\d{2}/\d{2}/[a-z0-9\-]+/', Post)]
MySpider.run()
run python spider.py

案例在 /example/ 目录下.
github 地址: https://github.com/gaojiuli/gain/
|  |      1awolfly9      2017-06-02 17:35:46 +08:00 via Android mark | 
|      2MIROKY      2017-06-02 17:49:27 +08:00 via Android wow 马克 | 
|      3charove      2017-06-02 17:50:27 +08:00 感觉好叼。。。 | 
|  |      4qs      2017-06-02 20:13:08 +08:00 win 平台不支持 uvloop, 建议做个适配 | 
|      6maze1024      2017-06-03 00:30:49 +08:00 aiohttp 的 http 解析配合 uvloop 不是很高效,建议看看 uvloop 的实现 https://github.com/MagicStack/httptools | 
|  |      7isaced      2017-06-03 00:52:48 +08:00 建议把输出结果文件的操作封装一下用起来更舒服 | 
|      8PythonAnswer      2017-06-03 01:07:49 +08:00 via Android uvloop win 跑不了啊 | 
|  |      10prasanta OP @isaced 你有什么好的想法么,我现在是让使用者自定义 save()函数。不知道你的封装是指? | 
|  |      11prasanta OP @PythonAnswer 看了楼上的意见,我准备暂时移除 uvloop | 
|  |      12chuanqirenwu      2017-06-03 10:14:59 +08:00 不错,感谢作者的分享,已转发到 Pythonzhcn 社区,不知道是否允许? | 
|  |      13prasanta OP @chuanqirenwu 可以 | 
|  |      14pythonee      2017-06-03 20:17:46 +08:00 mark | 
|  |      15hellogbk      2017-06-04 00:51:49 +08:00 我这些天在用 pyquery 的时候是到一个问题,如果网页是以 <?xml version="1.0" encoding="UTF-8"?> 开头的则 pyquery 会出错。 不知道楼主有没有遇到。 | 
|      17hbmask      2017-06-04 10:50:47 +08:00 mark 一下 | 
|  |      18hellogbk      2017-06-04 13:27:37 +08:00 | 
|  |      20pb941129      2017-06-04 22:42:58 +08:00 mark 一下 |