#!/usr/bin/python #这里是解释器位置和python版本#-*- coding: utf-8 -*- #编码格式
"""@author: CuiXingYu
@contact: a15931829662@163.com
@software: PyCharm
@file: CVPR.py
@time: 2020/4/17 19:36"""
importreimportrequestsimportpymysqldefget_context(url):"""params:
url: link
return:
web_context"""web_context=requests.get(url)returnweb_context.textdefget_conn():"""建立数据库连接
:return:"""conn=pymysql.connect(#本机IP地址
host='127.0.0.1',#数据库用户名
user='root',#密码
password='101032',#需要操作的数据库名称
db='db_database07',
)#cursor对象 可以进行sql语句执行 和 获得返回值
cursor=conn.cursor()returnconn,cursordefclose_conn(conn,cursor):"""关闭连接
:param conn: 连接对象
:param cursor: cursor对象
ifcursor:
cursor.close()ifconn:
conn.close()defget_name():"""获取论文的名字 url 地址
:return:"""conn,cursor=get_conn()
url= 'http://openaccess.thecvf.com//CVPR2019.py'web_context=get_context(url)#find paper files
'''(?<=href="): 寻找开头,匹配此句之后的内容
.+: 匹配多个字符(除了换行符)
?pdf: 匹配零次或一次pdf
(?=">pdf): 以">pdf" 结尾
|: 或'''info=[]#link pattern: href="***_CVPR_2019_paper.pdf">pdf
link_list = re.findall(r"(?<=href=").+?pdf(?=">pdf)|(?<=href=').+?pdf(?=">pdf)", web_context)#name pattern: ***
name_list = re.findall(r"(?<=2019_paper.html">).+(?=)", web_context)for one,two inzip(name_list,link_list):
info.append([one,two])#sql语句 对数据库进行操作
sql = "insert into paperinfo(name,url) values(%s,%s)"
try:#执行sql语句
cursor.executemany(sql,info)
conn.commit()except:
conn.rollback()
close_conn(conn, cursor)defsaveContent_list(hotword ,number):"""插入数据库
:param hotword: 单词
:param number: 数量
#打开数据库连接(ip/数据库用户名/登录密码/数据库名)
conn,cursor=get_conn()
sql="insert into hotword (hotword,number) values (%s,%s)"val=(hotword,number)
cursor.execute(sql,val)#使用 fetchone() 方法获取数据.
conn.commit()#关闭数据库连接(别忘了)
conn.close()defget_hotword():"""爬取热词并统计数目
:return:"""url= 'http://openaccess.thecvf.com//CVPR2019.py'web_context=get_context(url)
name_list= re.findall(r"(?<=2019_paper.html">).+(?=)", web_context)
text= " "
for word inname_list:
text= text +word
word=text.split()
word_dict={}for w inword:if w not inword_dict:
word_dict[w]= 1
else:
word_dict[w]= word_dict[w] + 1a= sorted(word_dict.items(), key=lambda item: item[1], reverse=True)#sql语句 对数据库进行操作
for x ina:try:
word=x[0]
num=x[1]
saveContent_list(word,num)except:print("失败")