博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django+scrapy做一个看妹子项目
阅读量:6802 次
发布时间:2019-06-26

本文共 2737 字,大约阅读时间需要 9 分钟。

环境: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 makemigrationsPython manage.py migrate复制代码

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

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

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

7、scrapy项目中的item文件

from scrapy_djangoitem import DjangoItemfrom index.models import Feedsclass 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 CrawlSpiderfrom SeeMeiSpider.items import SeemeispiderItemclass 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 executeexecute('scrapy crawl spider'.split())复制代码

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

  

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

from django.shortcuts import renderfrom django.views.generic.base import Viewfrom .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 urlfrom django.contrib import adminfrom index.views import FeedsViewurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^$', FeedsView.as_view(), name='index')]复制代码

  14、最后启动项目。

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

项目地址:

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

你可能感兴趣的文章
DBA生存警示:主备环境误操作案例及防范建议
查看>>
聊天机器人并不适合每一项业务和每个人
查看>>
拼写错误影响黑客盗窃数亿美元
查看>>
真正的持续集成:分布式代码仓库和依赖
查看>>
KDD论文解读 | 想要双11抢单快?靠这个技术提速9MS
查看>>
Asp.net与Flex交互测试记录
查看>>
两招抵御APT攻击
查看>>
教师节有“假期” 网络电话传递温情祝福
查看>>
人们应将公共云与私有云的辩论抛之脑后
查看>>
RFID技术或将代替条形码和二维码
查看>>
新三板上市公司突破6000家安防公司103家
查看>>
中天携手协鑫集成共拓光伏市场
查看>>
云存储与视频监控协力合作 平安城市再提速
查看>>
Windows环境搭建Web自动化测试框架Watir
查看>>
两大方向各有机会,CRM SaaS还能怎么玩?
查看>>
再等两年 英特尔能否重回摩尔定律?
查看>>
智慧城市建设 这五个方面不可不考虑
查看>>
Qt之镜像旋转
查看>>
《Cinema 4D + After Effects动态图形设计案例解析》——第 1 章 动态图形设计概述 1.1 什么是动态图形...
查看>>
WordPress REST API 内容注入/权限提升漏洞
查看>>