日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scrapy Django项目

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy Django项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求: 編寫爬蟲項目與Django項目詳解和, 將爬取到的數據展示到前端頁面上

# spider編寫: import scrapy from dl.items import DlItem class PSpider(scrapy.Spider):name = 'p'# allowed_domains = ['www.baidu.com']start_urls = ['https://www.kuaidaili.com/free/']def parse(self, response):# print(response)tr_list = response.xpath('//*[@id="list"]/table/tbody/tr')# print(tr_list)for tr in tr_list:ip = tr.xpath('./td[1]/text()').extract_first()port = tr.xpath('./td[2]/text()').extract_first()typ = tr.xpath('./td[3]/text()').extract_first()protocal = tr.xpath('./td[4]/text()').extract_first()position = tr.xpath('./td[5]/text()').extract_first()# print(ip, port, protocal, position)item = DlItem()item['ip'] = ipitem['port'] = portitem['typ'] = typitem['protocal'] = protocalitem['position'] = positionprint(item)yield item # items編碼 import scrapy class DlItem(scrapy.Item):ip = scrapy.Field()port = scrapy.Field()typ = scrapy.Field()protocal = scrapy.Field()position = scrapy.Field() # Django項目創建與所有配置: 1.models創建: from django.db import models# Create your models here.class Proxy(models.Model):ip = models.CharField(max_length=50)port = models.CharField(max_length=50)typ = models.CharField(max_length=50)protocal = models.CharField(max_length=50)position = models.CharField(max_length=50)2.在scrapy框架項目中嵌入django import os import sys sys.path.append(os.path.dirname(os.path.abspath('.'))) os.environ['DJANGO_SETTINGS_MODULE'] = 'proxyscan.settings' # 手動初始化Django: import django django.setup()3.修改爬蟲item: import scrapy from scrapy_djangoitem import DjangoItem from proxy import models class DlItem(DjangoItem):django_model = models.Proxy4.pipeline編碼: class DlPipeline(object):def process_item(self, item, spider):print('開啟數據庫, 進行數據存儲')item.save()print('關閉數據庫')return item5.Django項目遷移數據庫與admin后臺配置 Python manage.py makemigrations python manage.py migratefrom proxy.models import Proxy admin.site.register(Proxy)# 創建超級用戶: Python manage.py createsuperuser # 路由: from django.conf.urls import url from django.contrib import admin from proxy.views import indexurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^index/', index), ]# 視圖函數: from django.shortcuts import render from proxy.models import Proxy def index(requests):p = Proxy.objects.all()return render(requests, 'index.html', {"p":p}) # 前端代碼: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"><div class="row" ><div class="col-md-10 col-md-offset-2" style="margin:0 auto"><div class="panel panel-primary"><div class="panel-heading" style="margin-top:50px"><h3 class="panel-title">代理IP一覽表</h3></div><div class="panel-body"><table class="table table-striped"><thead><tr><th>IP</th><th>Port</th><th>Type</th><th>Protocal</th><th>Positon</th></tr></thead><tbody>{% for i in p %}<tr><th>{{ i.ip }}</th><td>{{ i.port }}</td><td>{{ i.typ }}</td><td>{{ i.protocal }}</td><td>{{ i.position }}</td></tr>{% endfor %}</tbody></table></div></div></div></div> </div></body> </html>

總結

以上是生活随笔為你收集整理的Scrapy Django项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。