django+scrapy做一个看妹子项目

环境:python3.6+django1.11+scrapy1.4+mysql5.7

实现思路:利用scrapy抓取到的数据存储到mysql,django做后端.

核心部分:需要用到scrapy-djangoitem这个库,利用django的orm,scrapy抓取到的数据直接存储到django的orm映射的mysql数据库中。


1、创建一个django工程<SeeMeizi>,再进入SeeMeizi工程中创建scrapy工程

scrapy startproject SeeMeiSpider
复制代码

2.、在django目录下新建static文件存放项目所需要的资源文件,然后在setting文件中对static路劲进行配置

     

3、创建django app,

Python manage.py startapp index
复制代码

     为了后续扩展,在目录下创建个apps文件,存放所有创建的django app。

     

工程目录如上。

4、还需要在setting文件中配置apps的文件路劲,


 接着是添加我们刚才创建的app到INSTALLED_APPS中去.


5、index下的models.py

from django.db import models


# Create your models here.

class Feeds(models.Model):
    title = models.CharField(max_length=100, verbose_name='标题')
    image_url = models.CharField(max_length=100, verbose_name='图片链接')

    class Meta:
        verbose_name = '动态'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.title复制代码

Python manage.py makemigrations
Python manage.py migrate复制代码


6、接下来配置我们的scrapy项目中的setting文件,

import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'SeeMeiZi.settings'
django.setup()复制代码

这里是scrapy-djangoitem所需要的配置.

7、scrapy项目中的item文件

from scrapy_djangoitem import DjangoItem
from index.models import Feeds


class SeemeispiderItem(DjangoItem):
    django_model = Feeds复制代码

8、scrapy项目中的pipline文件

class SeemeispiderPipeline(object):
    def process_item(self, item, spider):
        item.save()
        return item复制代码

记得在setting文件中取消掉pipline的注释

9、在spiders文件夹下新建个MzSpider.py

from scrapy.spiders import CrawlSpider
from SeeMeiSpider.items import SeemeispiderItem


class MzSpider(CrawlSpider):
    name = 'spider'
    start_urls = ['http://www.lolmz.com/hot.php']

    def parse(self, response):
        img_list = response.xpath('//div[@class="chroma-gallery mygallery"]//img')
        for img in img_list:
            title = img.xpath('@alt').extract_first()
            img_url = img.xpath('@src').extract_first()
            item = SeemeispiderItem()
            item['title'] = title
            item['image_url'] = img_url
            yield item复制代码

10、在新建个main.py运行我们的爬虫

from scrapy.cmdline import execute

execute('scrapy crawl spider'.split())复制代码

  这样数据就抓到mysql中去了。

  

11、回到django项目中,index下的views.py

from django.shortcuts import render
from django.views.generic.base import View
from .models import Feeds


# Create your views here.

class FeedsView(View):
    def get(self, request):
        all_feeds = Feeds.objects.all()
        return render(request, 'index.html', {'all_feeds': all_feeds})复制代码

12、index.html修改

13、最后在urls进行配置

from django.conf.urls import url
from django.contrib import admin
from index.views import FeedsView

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', FeedsView.as_view(), name='index')
]复制代码

  14、最后启动项目。



15、结束:大家还可以发挥更多的想象在拓展。

项目地址:github.com/Rtsunoath/S…


转载于:https://juejin.im/post/5a2605f251882535c56cc2e6

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值