前段时间写了如何用Python进行简单的数据挖掘,主要是从百度和新浪财经挖掘公司的新闻数据详情请看这里
基于Python的简单数据挖掘
今天我们在这个的基础上再进行数据去重,筛选还有舆情分,因为要去重所我们把数据放到了MySQL上面,然后根据标婷进行简单的去重代码如下
select_sql = 'SELECT * FROM test WHERE title = %s'
cur.execute(select_sql, title)
if len(data_all) == 0:#表示没有重复数据
然后去重之后再根据关键词进行舆情筛选关键词是
keywords = ['违约', '诉讼', '兑付']#舆论关键词
然后如果标题或者文章正文出现这些关键词的话就扣5分,代码如下
num = 0
article = requests.get(href).text
article = encoed(article)
p_article = '<p>(.*?)</p>'
article_main = re.findall(p_article, article, re.S)
article = ''.join(article_main)
for k in keywords:
if (k in article) or (k in title):
num -= 5
这样就OK了,当然关键词可以自行修改这里就不累赘,然后可以通过查询数据库获取每天某家公司的舆情分,然后看这个分与股票的关系,当然这里只是简单的一个判断,真的数据分析还会涉及很多金融知识,我只是一个喜欢金融的程序员而已还做不到那个地步,以下是全部代码,需要的小伙伴可以拿去运行看看,里面对时间的统一还有乱码都进行了处理
import requests
import re
import pymysql
import time
#headers模拟浏览器打开网站,User-Agent的值可以通过在浏览器直接输入chrome://version/获取,其中的用户代理就是
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'}
sql = 'INSERT INTO test (company, title, href, date, source, score) VALUES (%s, %s, %s, %s, %s, %s)'
select_sql = 'SELECT * FROM test WHERE title = %s'
get_score_sql = 'SELECT score FROM test WHERE company LIKE %s AND date LIKE %s'
companys = ['华能信托', '阿里巴巴', '万科集团', '百度集团', '腾讯', '京东']#爬取的公司名字,可增减
keywords = ['违约', '诉讼', '兑付']#舆论关键词
def getScore(company):
today = time.strftime('%Y-%m-%d')
db = pymysql.connect(host='localhost', port=3308, user='root', password='root',