新浪财经新闻爬取并进行舆情分析

本文介绍了如何爬取新浪财经的个股资讯,并进行数据清洗和初步的情感分析。通过观察URL模式实现自动翻页,利用正则表达式提取新闻链接。在数据清洗阶段,去除废弃信息,对内容进行去重和长度过滤。最后,使用snownlp库进行情感分析,但指出其在财经新闻中的准确性可能不足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章属于对新浪财经上某一个股个股资讯的爬取并进行舆情分析,目前先只简单说下代码使用方法,后面再细说下Html的解析细节和异步并发爬取。
1、基本思路(以中国中兔为例):
(1)找到个股url
在这里插入图片描述
点击公司资讯
在这里插入图片描述
可以看到最近的有关中国中兔的新闻,往后翻几页
https://vip.stock.finance.sina.com.cn/corp/view/vCB_AllNewsStock.php?symbol=sh601888&Page=2
https://vip.stock.finance.sina.com.cn/corp/view/vCB_AllNewsStock.php?symbol=sh601888&Page=3
https://vip.stock.finance.sina.com.cn/corp/view/vCB_AllNewsStock.php?symbol=sh601888&Page=4
可以对比下第二第三第四这几页的url,可以发现,只是page这里有所改变,因此,我们只需要对page进行遍历,就可以实现自动翻页。
2.找到具体新闻的url
这里先不说,后面有空再细说,其实就是用正则找出。
以上两部分的代码,这里是对1到5页新闻进行爬取,如果要进行大批量爬取,建议一次最多只30到50页,我自己爬的时候最多到50页就拒绝请求了,此时需要换user-agent或者进行其他反扒措施:

import requests
from lxml import etree
import re
from urllib.request import urlopen, HTTPError
from bs4 import BeautifulSoup

def get_content(url):
    try:
        html = urllib.request.urlopen(url)
    except HTTPError as e:
        return None
    try:
        obj = BeautifulSoup(html.read(),"html.parser")
    except HTTPError as f:
        return None
    nameList = obj.findAll("div", {
   "class": "article"})
    for name in nameList:
        data = name.get_text()
        f = open("C:/Users/01/Desktop/股票信息1.csv", 'a', encoding='utf-8')
        f.write(data)
        f.write("\n")
        f.close()
        
headers = {
   'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#爬取到页面源码数据
for i in range(1,5):
    url = "https://vip.stock.finance.sina.com.cn/corp/view/vCB_AllNewsStock.php?symbol=sh600066&Page=%d"%i
    page_text = requests.get(url=url,headers=headers).text
    #数据解析
    tree = etree.HTML(page_text)
    ex = "<a target='_blank' href='(.*?)'>"
    url_list = re.findall(ex, page_text, re.S)
    for url in url_list: 
       get_content(url)

3、数据清洗:
上面爬下来的个股资讯会充斥着各种各样废弃信息,我们需要对其进行筛选清洗。
infopen = open(“C:/Users/01/Desktop/股票信息1.csv”, ‘r’, encoding=‘gbk’)
outopen = open(“C:/Users/01/Desktop/股票信息2.csv”, ‘w’, encoding=‘gbk’)
lines = infopen.readli

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值