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

这篇文章属于对新浪财经上某一个股个股资讯的爬取并进行舆情分析,目前先只简单说下代码使用方法,后面再细说下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

  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的例子,使用Python和BeautifulSoup爬取新浪财经新闻进行情感分析。 首先,需要安装必要的库:BeautifulSoup、requests和TextBlob(进行情感分析)。 ```python from textblob import TextBlob import requests from bs4 import BeautifulSoup ``` 接下来,定义一个函数来获取新浪财经网站上的新闻标题和内容: ```python def get_news(url): # 发送请求 response = requests.get(url) # 解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 获取新闻标题 title = soup.find('h1', class_='main-title').text # 获取新闻内容 content = '' for p in soup.find_all('p'): content += p.text return title, content ``` 接下来,定义一个函数来进行情感分析: ```python def analyze_sentiment(text): # 使用TextBlob进行情感分析 blob = TextBlob(text) sentiment_score = blob.sentiment.polarity if sentiment_score > 0: return 'positive' elif sentiment_score < 0: return 'negative' else: return 'neutral' ``` 最后,将所有代码放在一起: ```python from textblob import TextBlob import requests from bs4 import BeautifulSoup def get_news(url): # 发送请求 response = requests.get(url) # 解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 获取新闻标题 title = soup.find('h1', class_='main-title').text # 获取新闻内容 content = '' for p in soup.find_all('p'): content += p.text return title, content def analyze_sentiment(text): # 使用TextBlob进行情感分析 blob = TextBlob(text) sentiment_score = blob.sentiment.polarity if sentiment_score > 0: return 'positive' elif sentiment_score < 0: return 'negative' else: return 'neutral' # 测试 url = 'https://finance.sina.com.cn/stock/usstock/c/2022-05-11/doc-imcwipii6960623.shtml' title, content = get_news(url) sentiment = analyze_sentiment(content) print('标题:', title) print('情感分析:', sentiment) ``` 这个例子只是一个简单的示例,还有很多可以改进的地方。例如,可以使用更高级的情感分析算法,或者使用多线程/多进程来加快爬取速度等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值