master
parent
d12e7dc982
commit
bad777ad6c
@ -0,0 +1,61 @@ |
|||||||
|
import json |
||||||
|
import os |
||||||
|
import time |
||||||
|
|
||||||
|
import django |
||||||
|
import requests |
||||||
|
import threading |
||||||
|
from bs4 import BeautifulSoup |
||||||
|
|
||||||
|
from PixivSearch.settings import logger |
||||||
|
|
||||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PixivSearch.settings") |
||||||
|
django.setup() |
||||||
|
from PixivSearch.model.config import mediaInfo, stat |
||||||
|
|
||||||
|
current_mediaInfo = mediaInfo(id=0, chn_name='null') |
||||||
|
flag = True |
||||||
|
|
||||||
|
|
||||||
|
class bangumi(threading.Thread): |
||||||
|
begin = 0 |
||||||
|
end = 0 |
||||||
|
id = 0 |
||||||
|
|
||||||
|
def __init__(self, begin, end): |
||||||
|
threading.Thread.__init__(self) |
||||||
|
self.begin = begin |
||||||
|
self.end = end |
||||||
|
|
||||||
|
def save(self): |
||||||
|
req = requests.get("https://www.bilibili.com/bangumi/media/md%d" % self.id) |
||||||
|
if (req.status_code == 200): |
||||||
|
tag = BeautifulSoup(req.text, 'lxml') |
||||||
|
script = tag.select("script")[3].text |
||||||
|
json_str = script[script.index("=") + 1:script.index("function") - 2] |
||||||
|
json_obj = json.loads(json_str) |
||||||
|
stat_info = json_obj['mediaInfo']['stat'] |
||||||
|
print(json_obj['mediaInfo']['chn_name']) |
||||||
|
print(stat_info) |
||||||
|
mediaInfo(id=self.id, chn_name=json_obj['mediaInfo']['chn_name']).save() |
||||||
|
global current_mediaInfo |
||||||
|
current_mediaInfo = mediaInfo.objects.get(pk=self.id) |
||||||
|
stat(id=self.id, danmakus=int(stat_info['danmakus']), favorites=stat_info['favorites'], |
||||||
|
views=stat_info['views']).save() |
||||||
|
|
||||||
|
def run(self) -> None: |
||||||
|
self.go(self.begin, self.end) |
||||||
|
|
||||||
|
def get(self): |
||||||
|
return current_mediaInfo |
||||||
|
|
||||||
|
def go(self, start, end): |
||||||
|
for num in range(start, end): |
||||||
|
if (flag): |
||||||
|
time.sleep(1) |
||||||
|
logger.info("爬虫进度:%d" % num) |
||||||
|
self.id = num |
||||||
|
self.save() |
||||||
|
else: |
||||||
|
logger.info("停止爬虫") |
||||||
|
break |
@ -0,0 +1,44 @@ |
|||||||
|
from django.db import models |
||||||
|
import json |
||||||
|
|
||||||
|
|
||||||
|
class param(models.Model): |
||||||
|
param_name = models.CharField(max_length=10, primary_key=True) |
||||||
|
param_value = models.CharField(max_length=128) |
||||||
|
|
||||||
|
|
||||||
|
class stat(models.Model): |
||||||
|
id = models.IntegerField(primary_key=True) |
||||||
|
danmakus = models.IntegerField() |
||||||
|
favorites = models.IntegerField() |
||||||
|
views = models.IntegerField() |
||||||
|
|
||||||
|
# def json(self): |
||||||
|
# return bangumi_stat(self['danmakus'],self['favorites'],self['views']) |
||||||
|
|
||||||
|
|
||||||
|
class mediaInfo(models.Model): |
||||||
|
id = models.IntegerField(primary_key=True) |
||||||
|
chn_name = models.CharField(max_length=128) |
||||||
|
|
||||||
|
def __str__(self) -> str: |
||||||
|
i = {} |
||||||
|
i['media_id'] = self.id |
||||||
|
i['chn_name'] = self.chn_name |
||||||
|
return i |
||||||
|
|
||||||
|
|
||||||
|
class bangumi_list(models.Model): |
||||||
|
season_id = models.IntegerField(primary_key=True) |
||||||
|
badge = models.CharField(max_length=128) |
||||||
|
brief = models.CharField(max_length=128) |
||||||
|
copyright = models.CharField(max_length=128) |
||||||
|
cover = models.CharField(max_length=128) |
||||||
|
favorites = models.IntegerField() |
||||||
|
is_finish = models.IntegerField() |
||||||
|
newest_ep_index = models.IntegerField() |
||||||
|
pub_time = models.DateTimeField() |
||||||
|
season_status = models.IntegerField() |
||||||
|
title = models.CharField(max_length=128) |
||||||
|
total_count = models.IntegerField() |
||||||
|
trailer_aid = models.IntegerField() |
@ -1,5 +0,0 @@ |
|||||||
from django.db import models |
|
||||||
|
|
||||||
class param(models.Model): |
|
||||||
param_name = models.CharField(max_length=10,primary_key=True) |
|
||||||
param_value = models.CharField(max_length=128) |
|
@ -0,0 +1,27 @@ |
|||||||
|
<html xmlns="http://www.w3.org/1999/html"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<title>参数管理</title> |
||||||
|
{% load staticfiles %} |
||||||
|
<script src="{% static "js/jquery-3.2.1.min.js"%}"></script> |
||||||
|
<script> |
||||||
|
$(function () { |
||||||
|
$("button").click(function(){ |
||||||
|
$("form").attr("method",$(this).attr("id")).submit(); |
||||||
|
}); |
||||||
|
|
||||||
|
}) |
||||||
|
</script> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<form action="/tsdm"> |
||||||
|
{% csrf_token %} |
||||||
|
<label>参数名<input name="param_name" value="{{param_name}}"/></label> |
||||||
|
<label>参数值<input name="param_value" value="{{param_value}}"/></label> |
||||||
|
<div> |
||||||
|
<button id="POST">设置</button> |
||||||
|
<button id="GET">获取</button> |
||||||
|
</div> |
||||||
|
</form> |
||||||
|
</body> |
||||||
|
</html> |
@ -1,63 +1,63 @@ |
|||||||
<html xmlns="http://www.w3.org/1999/html"> |
<html xmlns="http://www.w3.org/1999/html"> |
||||||
<head> |
<head> |
||||||
<style> |
<style> |
||||||
div{ |
div{ |
||||||
text-align:center; |
text-align:center; |
||||||
} |
} |
||||||
ol{list-style-type:demical;} |
ol{list-style-type:demical;} |
||||||
ol li{ list-style-position:outside;} |
ol li{ list-style-position:outside;} |
||||||
</style> |
</style> |
||||||
{% load staticfiles %} |
{% load staticfiles %} |
||||||
<script src="{% static "js/jquery-3.2.1.min.js"%}"></script> |
<script src="{% static "js/jquery-3.2.1.min.js"%}"></script> |
||||||
<script> |
<script> |
||||||
$(function () { |
$(function () { |
||||||
|
|
||||||
}); |
}); |
||||||
|
|
||||||
function check() { |
function check() { |
||||||
$("[name=pageSize],[name=order]").each(function () { |
$("[name=pageSize],[name=order]").each(function () { |
||||||
if($(this).val()!=''&&$(this).val()<=0){ |
if($(this).val()!=''&&$(this).val()<=0){ |
||||||
$(this).val(''); |
$(this).val(''); |
||||||
alert($(this).parent().text()+'不能小于等于0'); |
alert($(this).parent().text()+'不能小于等于0'); |
||||||
$(this).focus(); |
$(this).focus(); |
||||||
} |
} |
||||||
}); |
}); |
||||||
} |
} |
||||||
</script> |
</script> |
||||||
</head> |
</head> |
||||||
<body> |
<body> |
||||||
<form action="/pixiv/search" method="post" onsubmit="check()"> |
<form action="/pixiv/search" method="post" onsubmit="check()"> |
||||||
{% csrf_token %} |
{% csrf_token %} |
||||||
<label>关键字<input name="word" placeholder="R-18"/></label> |
<label>关键字<input name="word" placeholder="R-18"/></label> |
||||||
<label>页数<input name="pageSize" type="number" placeholder="10"/></label> |
<label>页数<input name="pageSize" type="number" placeholder="10"/></label> |
||||||
<label>排行数<input name="order" type="number" placeholder="10"/></label> |
<label>排行数<input name="order" type="number" placeholder="10"/></label> |
||||||
<label>结果显示类型:文本信息<input type="radio" value="" name="type" checked/></label> |
<label>结果显示类型:文本信息<input type="radio" value="" name="type" checked/></label> |
||||||
<label>图文信息<input type="radio" value="img" name="type"/></label> |
<label>图文信息<input type="radio" value="img" name="type"/></label> |
||||||
|
|
||||||
<input type="submit" /> |
<input type="submit" /> |
||||||
{% if download %} |
{% if download %} |
||||||
<a href="{% static "/download/" %}{{download}}">图包提取(文件大小:{{ size}})</a> |
<a href="{% static "/download/" %}{{download}}">图包提取(文件大小:{{ size}})</a> |
||||||
{# <button id="download" onclick="window.open('{% static "/download/" %}{{download}}')">图包提取(文件大小:{{ size}})</button>#} |
{# <button id="download" onclick="window.open('{% static "/download/" %}{{download}}')">图包提取(文件大小:{{ size}})</button>#} |
||||||
{% endif %} |
{% endif %} |
||||||
</form> |
</form> |
||||||
|
|
||||||
<div> |
<div> |
||||||
<h1>{{ msg}}</h1> |
<h1>{{ msg}}</h1> |
||||||
</div> |
</div> |
||||||
<ol> |
<ol> |
||||||
{% for imageNode in imageNodes %} |
{% for imageNode in imageNodes %} |
||||||
<li> |
<li> |
||||||
<div> |
<div> |
||||||
<h1>标题:<a href="https://www.pixiv.net/member_illust.php?mode=medium&illust_id={{imageNode.illustId}}" target="_blank">{{imageNode.illustTitle}}</a>,画师:<a href="https://www.pixiv.net/member.php?id={{ imageNode.userId}}">{{imageNode.userName}}</a>,收藏数:{{imageNode.bookmarkCount}}</h1> |
<h1>标题:<a href="https://www.pixiv.net/member_illust.php?mode=medium&illust_id={{imageNode.illustId}}" target="_blank">{{imageNode.illustTitle}}</a>,画师:<a href="https://www.pixiv.net/member.php?id={{ imageNode.userId}}">{{imageNode.userName}}</a>,收藏数:{{imageNode.bookmarkCount}}</h1> |
||||||
{% if imageNode.localName %} |
{% if imageNode.localName %} |
||||||
<img src="{% static "images/"%}{{imageNode.localName}}"> |
<img src="{% static "images/"%}{{imageNode.localName}}"> |
||||||
{% endif %} |
{% endif %} |
||||||
</div> |
</div> |
||||||
</li> |
</li> |
||||||
{% empty %} |
{% empty %} |
||||||
<p>{{tip}}</p> |
<p>{{tip}}</p> |
||||||
{% endfor %} |
{% endfor %} |
||||||
|
|
||||||
</ol> |
</ol> |
||||||
</body> |
</body> |
||||||
</html> |
</html> |
Loading…
Reference in new issue