Oracle用知乎回答书籍推荐(oracle书籍推荐知乎)

Oracle:用知乎回答书籍推荐

在当今信息爆炸的时代,许多人想要阅读优秀的书籍,但是由于书海茫茫,他们不知道该读哪些书,这时候就需要一些推荐。知乎是一个众多读者的聚集地,很多人都乐于分享自己读过的书以及书籍推荐,我们可以采用 Oracle 数据库和 Python 编程语言,实现对知乎上书籍推荐问答的爬取和分析。

我们需要爬取知乎上与书籍有关的问答。我们可以使用 Python 的 requests 模块实现对网页的访问和数据获取。对于知乎来说,我们需要通过 cookies 的方式认证身份,否则我们将无法爬取到我们需要的数据。代码如下:

import requests
url = "https://www.zhihu.com/api/v4/search_v3"

params = {
"t": "general",
"q": "书籍推荐",
"correction": 1,
"search_hash_id": "", #此处需要填写自己的 search_hash_id
"offset": 0,
"limit": 20,
"vertical_info": 0,
"special_sug": 1,
"sug_typing": "normal",
"session_id": "", #此处需要填写自己的 session_id
"manifest_version": 3
}

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36",
"Cookie": "" #此处需要填写自己的 Cookie
}
response = requests.get(url, params=params, headers=headers)

print(response.json())

上述代码中的 “session_id”、”search_hash_id” 和 “Cookie” 都需要我们自己在浏览器的开发者工具中查找。通过上述代码我们可以得到与书籍相关的回答列表,接下来我们需要对这些数据进行整理和分析。

对于文本数据的处理,我们可以使用 Python 的 jieba 库实现分词并生成词云。在此之前我们需要对文本进行清理,去除一些无用标点符号和停用词,代码如下:

import jieba
import wordcloud
from wordcloud import WordCloud, STOPWORDS
stopwords = {"和", "的", "了", "是", "我的",}

def clean_text(text):
text = text.replace("

", "").replace("
", "").replace("\r", "").replace("\n", "")
return text
def create_wordcloud(text):
text = " ".join(jieba.lcut(text))
wc = WordCloud(width=800, height=600, background_color='white', stopwords=stopwords)
wc.generate(text)
return wc.to_image()

上述代码中,我们将 “\r” 、”\n”、”

” 和 “
” 等字符替换为空字符,然后使用 jieba 分词,最后创建词云图。接下来我们需要对读者推荐的书籍进行分析并展示。

考虑到 Oracle 数据库的稳定性和可扩展性,我们可以将分析结果存储在 Oracle 数据库中。代码如下:

import cx_Oracle
dsn = cx_Oracle.makedsn(host='', port=1521, service_name='') #此处需要填写自己的数据库信息
conn = cx_Oracle.connect(user='', password='', dsn=dsn)
cur = conn.cursor()
cur.execute("""
create table BOOK_RECOMMENDATION(
ID NUMBER(10),
TITLE NVARCHAR2(255),
AUTHOR VARCHAR2(100),
DESCRIPTION NVARCHAR2(1000),
URL VARCHAR2(200)
)
""")
for answer in answers:
book_list = extract_book_info(clean_text(answer["excerpt"]))
for book in book_list:
cur.execute("""
insert into BOOK_RECOMMENDATION(ID, TITLE, AUTHOR, DESCRIPTION, URL)
values(SEQ_BOOK_RECOMMENDATION_ID.nextval, :title, :author, :description, :url)
""", {"title": book["title"], "author": book["author"],"description": book["description"], "url":book["url"]})

conn.commit()
cur.close()
conn.close()

我们创建了名为 BOOK_RECOMMENDATION 的表来存储推荐的书籍信息,列包括 ID、TITLE、AUTHOR、DESCRIPTION 和 URL,其中 ID 为自增长类型。在爬取知乎上书籍推荐数据后,我们将每个回答中出现的书籍信息提取出来,并将结果存入 Oracle 数据库的 BOOK_RECOMMENDATION 表中。

在数据存储完毕后,我们可以通过 Oracle SQL 查询语句分析数据并得出结论。例如,我们可以统计不同作者的书籍数量,代码如下:

select AUTHOR, COUNT(*) from BOOK_RECOMMENDATION GROUP BY AUTHOR ORDER BY COUNT(*) DESC;

该语句可以得到每个作者的书籍推荐数量,通过对结果进行可视化处理,我们可以知道哪些作者被推荐得更多,哪些书籍更受欢迎等等。

通过 Python 和 Oracle 数据库的应用,我们可以快速提取知乎上的书籍推荐问答,进行文本数据处理和分析,并将结果存储到 Oracle 数据库中,便于后续查询和分析。这样的应用,不仅可以帮助读者快速找到自己喜欢的书籍,同时也可以让数据分析者更加高效地获取和分析数据。


数据运维技术 » Oracle用知乎回答书籍推荐(oracle书籍推荐知乎)