1. 基本信息
这个项目属于哪个课程 | https://edu.cnblogs.com/campus/fzu/2023DataCollectionandFusiontechnology |
---|---|
组名 | 冲就完事 |
项目简介 | 当我们置身于日常生活或旅途中,常会被美景所震撼,但往往难以找到合适的诗句来表达内心的感悟。为了传承中华传统文化、提升人们的诗词修养和表达能力,我们需要一个智能系统能够根据用户拍摄的照片,自动匹配相应的诗句,并为用户提供相关的学习资源。 |
团队成员学号 | 102102101田甜、102102102刘燕莹、102102103李盈盈、102102106何雯彧、102102107张锦瑶、102102110饶雯捷、102102147高宝众、102102153彭诗忠 |
这个项目的目标 | 本系统旨在实现以下功能: a. 图片解释:基于用户上传的图片,系统能够自动识别图片内容,并提供与图片相符合的文字解释。 b. 古诗详情:用户可以选择获取与所拍图片相关的一首古诗的详细信息,包括标题、作者、内容、出处等。 c. 同韵古诗:用户可以获取与所拍图片相关的同韵古诗,以便进行进一步学习和欣赏。 d. 相似句子查询:用户可以输入关键词或句子,系统将返回与输入内容相似的古诗句子,以帮助用户寻找相关诗歌作品。 e.获取诗句相关地点地图:当诗句蕴含地址时,用户可以获取到该地点在地图上的位置 |
其他参考文献 | Junnan Li, Dongxu Li, Silvio Savarese, Steven Hoi.BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models:arXiv:2301.12597[https://arxiv.org/abs/2301.12597] |
gitee链接: | https://gitee.com/PicaPicasso/crawl_project/tree/master/综合设计——多源异构数据采集与融合应用综合实践 |
]() |
2.个人分工
(1)爬取网站数据,并将需要的数据解析出来
1. 爬取相似句子
import requests
import json
import sys
import string
import re
def scrapyData(id):
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47'
}
# 接口三
similarSentence_url = f'https://api.sou-yun.cn/api/SimilarClause?poemId={id}'
similarSentence_data = requests.get(url=similarSentence_url,headers=headers).json()
if isinstance(similarSentence_data,dict) :
return json.dumps([])
data = [] # 创建一个空列表
for item in similarSentence_data:
original_clause = item.get('OriginalClause',"")
similar_clauses = item.get('SimilarClauses',"")
if similar_clauses:
data.append({
"originalSentence": re.sub(r'[,。]+$','',original_clause),
"similarSentence": re.sub(r'[,。]+$','',similar_clauses[0]['Content']) + " " + similar_clauses[0]['Dynasty'] + "." +
similar_clauses[0]['Author'] + " " + similar_clauses[0]['Title']
})
if len(data) > 3:
data = data[:3]
# 将数据转换为 JSON 格式
json_data = json.dumps(data)
return json_data
if __name__ == '__main__':
result = scrapyData(sys.argv[1])
# result = scrapyData("")
print(result)
2. 爬取同韵作品
import requests
import re
import json
import sys
def scrapyData(id):
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.47'
}
# 接口四
SameRhymePoems_url = f'https://api.sou-yun.cn/api/SameRhymePoems?poemId={id}'
sameRhymePoems_data = requests.get(url=SameRhymePoems_url,headers=headers).text
s = '.*?"Title":.*?"(.*?)".*?"Author":.*?"(.*?)".*?"Dynasty":.*?"(.*?)"'
data = re.compile(s,re.S).findall(sameRhymePoems_data)
for i in range(len(data)):
data[i] = data[i][2] + "·" + data[i][1] + ":" + data[i][0]
return json.dumps(data)
if __name__ == '__main__':
result = scrapyData(sys.argv[1])
# result = scrapyData("")
print(result)
本来有想过用selenium来爬取数据,因为查询作品是要用关键词来进行检索的,写了一份代码,但是被毙掉了,因为不是很方便。
在使用selenium进入网页时,会弹出广告,我写的selenium里面关于关闭广告的部分被后面截取地图用上啦嘿嘿。
# 关闭广告
close = driver.find_element(By.XPATH, '//div[@class="popupad-close"]')
close.click()
time.sleep(3)
在同学的帮助下使用java调用python爬虫获取信息
(2)使用springboot编写后端部分接口代码
1. 接口三代码
@RequestMapping("/similarSentence")
public Result querySimilarSentence(){
String result_json = crawlRuner.Run("scrapySimilarSentence.py",id);
List<SimilarSentence> s = ParseJson.parse3(result_json);
log.info("similarSentence: " + id);
return Result.success(s);
}
2. 接口四代码
@RequestMapping("/rhymingWork")
public Result queryRhymingWork(){
String result_json = crawlRuner.Run("scrapyRhymingWork.py",id);
String [] data = ParseJson.parse2(result_json);
log.info("rhymingWork: " + id);
return Result.success(data);
}
因为是第一次接触springboot,所以对这部分还很陌生,在同学的帮助下勉强完成。
最后真滴很感谢高宝众同学对我的帮助,泪流满面了。