基于django的人-蜘蛛框架

ants的Python项目详细描述


蚂蚁
===

![构建状态](https://travis-ci.org/mymuisse/ants.svg?branch=master)



===

-django 1.8+
-gevent 1.1.1+



==



下载这个该死的源代码并构建

git clone git@github.com:mymusise/ants.git
cd ants
python setup.py build
sudo python setup.py install


====

1。初始化项目

好的,我建议您使用virtualenv

virtualenv my_env
source my_env/bin/activate


>然后安装需求并启动django项目

pip install django gevent ants
ants tools start project my_ants
cd my_ants

获取项目的文件树




:manage.py
,我的“蚁族”们
我的“蚁族”们
我的“蚁族”们
蚂蚁
│   └── __init__.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── spiders
├── 管理者的py
,蚂蚁
蚂蚁
/>//br/>



2。写下你的第一只蜘蛛蚂蚁!

ant s将通过run命令“python manage.py runclawer[spider廑name]`


让我们添加一个ant.``spider/ants/first廑blood.py`

import请求



class firstbloodclawerwhatnameyouwant(object):
name='first廑blood';必须是唯一的
url廑head=“”https://movie.douban.com/j/search\u主题?type=movie&;tag=%e7%83%ad%e9%97%a8&sort=recommend&;page廑limit=10&page廑start={}“
max廑page=4

def get廑url(self,url:
res=requests.get(url)
print(res.text)

def start(self):
need_url=[self.url_head.format(i)for i in range(self.max_page)]
list(map(self.get_url,need_url))


“name”属性是必需的,这是不同爪子的唯一标识。




python manage.py runclawer first_blood



你只需要定义两个模型,源和目标。例如:

in file clawers/models.py

source_url=models.charfield(max_length=255)



task_id=models.integerfield()
html=models.textfield()

请求,并将html源代码保存在“moviehtml”中。如果我们通过从basetask请求url获得一个页面,我们将把这个'basetask().id'保存到'moviehtml().task\u id'。我们可以这样重新定义我们的“第一滴血”蚂蚁:

=电影html

def run(self,task):
res=requests.get(task.source_url)
moviehtml.objects.create(task_id=task.id,html=res.text)

但是,如果basetask object.id中有一个在moviehtml.task id中,则此basetask对象将被赋予运行函数。

更多信息来自[该死的源代码](https://github.com/mymuisse/ants/blob/master/ants/utils.py l74)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
NetBeans中的Java Swing滚动窗格   java如何与具有复合键的表建立关系?   Android中读取文件时java数据丢失   java黄瓜场景。embed在ubuntu机器上不工作?   java从spring mvc控制器操作中,我如何获得请求/响应的访问权限?   java减去两个长值   java选择下一个值firebase 安卓   用于起始和结尾连字符的java正则表达式   Java正则表达式解释   java Lifefay freemarker ADT:方法不可用?   java我怎样才能让我的开关盒作用于JFrame?   java在我的场景中使用连接池的理想方式是什么   java我如何接受jsoup的cookies?   java如何将整数数组更改为字符串数组?   java Android操作\u指针\u向上直到剩余触摸移动时才调用   java为什么gradle会出错?   io如何在java中复制/拆分输入流?   java使JButton不可见,但尊重其原始空间   java Spring提交表单获取复选框值不起作用