Files
tophux_scrape/__pycache__/tophub_add_data_to_db.cpython-38.pyc

66 lines
5.5 KiB
Plaintext
Raw Normal View History

U
.<2E> i<><00>
@s<>dZddlZddlZddlZddlZddlmZddlmZddlmZddl Z ej
dddd <09>d
Z d Z d d <0A>Z dd<0F>Zdd<11>Zdd<13>Zdd<15>Zdd<17>Zdd<19>Zedkr<>z
e<13>Wn4ek
r<EFBFBD>Zze<08>de<16><00><02><00>W5dZ[XYnXdS)u<>
处理临时文件并写入数据库的脚本
读取指定格式的临时文件提取标题和链接调用API进行分类然后写入SQLite数据库
<EFBFBD>N)<01>datetime)<01>tqdm)<01>loggerztophub_add_data_to_db.logz10 MBZINFO)Zrotation<6F>levelz#http://localhost:11434/api/generatez gemma3:4bcCs:t<00>d<01>}|<00><02>}|<01>d<02>|<00><04>|<00><05>t<06>d<03>dS)u$初始化数据库创建表结构<E7BB93>tophub_data.dba>
CREATE TABLE IF NOT EXISTS articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
url TEXT NOT NULL,
category TEXT,
source_date TEXT NOT NULL,
created_at TEXT NOT NULL,
UNIQUE(title, source_date)
)
u数据库初始化完成N)<08>sqlite3<65>connect<63>cursor<6F>execute<74>commit<69>closer<00>info)<02>connr <00>r<00>XC:\Users\xiaji\Documents\个人文件夹\夏骥\hothub的抓取\tophub_add_data_to_db.py<70> init_databases 

rcCs,d}t<00>|<00>}t<01>dt|<01><01>d|<01><00><04>|S)u!查找符合格式的临时文件u*年*月*日*.txtu找到 u 个临时文件: )<04>globrr <00>len)Zpattern<72>filesrrr<00>find_temp_files,s
rc
Cslg}<01>zt|ddd<03><03>}|<02><01>}W5QRXtdt|<03>d<05>D]<5D>}|dt|<03>kr:||<00><04>}||d<00><04>}||d<00><04>}||d <00><04>}|dt|<03>kr<>||d<00><04>nd
} t<05>d |<07>}
t<05>d |<08>} |
r:| r:|<01>|
<EFBFBD>d<07>| <0B>d<07>d |kr<>|<06> d <0A>dndd<0F><03>q:t
<EFBFBD> d|<00>dt|<01><01>d<12><05>|WSt k
<EFBFBD>rf} z"t
<EFBFBD> d|<00>d| <0C><00><04>gWY<00>Sd} ~ XYnXdS)u4解析文件内容按5行一个循环提取数据<E695B0>rzutf-8)<01>encodingr<00><00><00><00><00><00>u 标题: (.+)u 链接: (.+)z: u未知)<03>title<6C>url<72>categoryu
从文件 u 解析出 u
条数据u 解析文件 u 失败: N)<0E>open<65> readlines<65>ranger<00>strip<69>re<72>search<63>append<6E>group<75>splitrr <00> Exception<6F>error) <0A> file_path<74>articles<65>f<>lines<65>iZnode_idr rrZ separatorZ title_matchZ url_match<63>errr<00>parse_file_content3s0 $  <18>
r2cCs>t<00>d<01>}|<02><02>}|<03>d||f<02>|<03><04>d}|<02><05>|dkS)u"检查标题+日期是否已存在rzX
SELECT COUNT(*) FROM articles
WHERE title = ? AND source_date = ?
r)rrr r
Zfetchoner )rZdate_strrr <00>countrrr<00>check_duplicateVs
<06> r4c
Cs<>z~d|<00><00>}t|dd<03>}tjt|dd<05>}|<03><04>|<03><05>}|<04>dd<07><02><07>}t|<05>dks`t|<05>d krdd
}t <09>
d |<00>d |<05><00><04>|WSt k
r<EFBFBD>}z t <09> d |<00>d|<06><00><04>WY<00>d
Sd}~XYnXdS)u调用API对标题进行分类u<E7B1BB>目标:对以下文字内容进行分类,返回结果为类别,如"社会新闻""金融""历史""购物""新质科技"等等。目的只返回2-4个字不返回其它内容。内容F)Zmodel<65>prompt<70>stream<61>)<02>jsonZtimeout<75>responserr<00>u其他u标题 'u ' 分类为: uAPI调用失败标题 'z': N) <0A> API_MODEL<45>requestsZpost<73>API_URLZraise_for_statusr8<00>getr$rrr r*r+)rr5<00>datar9<00>resultr r1rrr<00>classify_titlees"
<02>rAc
Cs<>t<00>d<01>}|<04><02>}z<>zFt<04><05><00>d<02>}|<05>d|||||f<05>|<04><08>t <09>
d|<00><00><02>WW<00>ndStj k
r<EFBFBD>t <09> d|<00><00><02>YW<00>DdSt k
r<EFBFBD>}zt <09>d|<07><00><02>WY<00>W<00>dSd }~XYnXW5|<04><03>Xd S)
u插入文章到数据库rz%Y-%m-%d %H:%M:%Sz}
INSERT INTO articles (title, url, category, source_date, created_at)
VALUES (?, ?, ?, ?, ?)
u成功插入文章: Tu文章已存在,跳过: Fu插入文章失败: N)rrr r r<00>now<6F>strftimer
r rr ZIntegrityError<6F>warningr*r+)rrr <00> source_daterr Z
created_atr1rrr<00>insert_article<6C>s"
 <0C>

 rFc Cs2t<00>d<01>t<02>t<03>}|s(t<00>d<02>dSd}d}|D]<5D>}t<00>d|<03><00><02>t<05>d|<03>}|r<>|<04>d<07><01>dt|<04>d <09><01>d
<EFBFBD>dt|<04>d <0B><01>d
<EFBFBD><04>}nt <09>
<EFBFBD><00> d <0C>}t |<03>}|s<>q4t |d |<03><00>d<0E>D]Z}|d7}t|d|<05>r<>t<00>d|d<00><00><02>q<>t|d<00>}t|d|d||<05>r<>|d7}q<>q4t<00>d|<01>d|<02><00><04>dS)u主处理函数u开始处理临时文件...u未找到临时文件Nru处理文件: u"(\d{4})年(\d{1,2})月(\d{1,2})日r<00>-rZ02drz%Y-%m-%du处理 )Zdescru跳过重复文章: ru处理完成! 总计处理: u, 成功插入: )rr rrrDr%r&r(<00>intrrBrCr2rr4rArF) Z
temp_filesZtotal_processedZtotal_insertedr,Z
date_matchrEr-Zarticler rrr<00>process_temp_files<65>s4

 4  rI<00>__main__u程序执行失败: )<18>__doc__rr<<00>osr%rrZlogururr<00>addr=r;rrr2r4rArFrI<00>__name__r*r1r+rrrr<00><module>s0   #4