财经新闻数据scrapy实战(东方财富网)
先看BeautifulSoup版本的
import requests
from bs4 import BeautifulSoup
link_head='http://finance.eastmoney.com/news/cywjh_'
link_end='.html'
hd={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}
for i in range(1,4):link=link_head+str(i)+link_endr=requests.get(link,headers=hd)r.encoding=r.apparent_encodingsoup=BeautifulSoup(r.text,'lxml')topic_list=soup.find_all('div',class_='text')for each in topic_list:title=each.find('p',class_='title')print(title.a.text.strip())print(each.a['href'])content=each.find('p',class_='info')print(content.text.strip())
scrapy版本(总结一下详细做法,方便后人学习)
打开命令行cmd,切换到选定目录下,我切换到桌面上
cd C:\Users\Heisenberg\Desktop
然后运行命令
scrapy startproject financeSpider
然后桌面就出现了这个工程文件夹
然后打开items.py,定义字段,修改后如下
import scrapyclass FinancespiderItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()title=scrapy.Field()link=scrapy.Field()content=scrapy.Field()
然后在cmd上输入
scrapy genspider finance finance.eastmoney.com
修改爬虫器finance.py进行网页解析,代码修改如下:
先看普通版
# -*- coding: utf-8 -*-
import scrapy
from bs4 import BeautifulSoup
from financeSpider.items import FinancespiderItem
#从这个工程fianceSpider.items中引入FinancespiderItemclass FinanceSpider(scrapy.Spider):name = 'finance'allowed_domains = ['finance.eastmoney.com']start_urls = ['http://finance.eastmoney.com/news/cywjh_1.html']url_head='http://finance.eastmoney.com/news/cywjh_'url_end='.html'def start_requests(self):#获取前3页的url地址for i in range(1,4):url=self.url_head+str(i)+self.url_endprint('当前页面是:',url)#对新闻列表发送Request请求yield scrapy.Request(url=url,callback=self.parse)def parse(self, response):#response.encoding=response.apparent_encodingsoup=BeautifulSoup(response.text,'lxml')title_list=soup.find_all('div',class_='text')for i in range(len(title_list)):#将数据封装到FinancespiderItem对象,字典型数据item=FinancespiderItem()title=title_list[i].find('p',class_='title')title=title.a.text.strip()link=title_list[i].a['href']#变成字典content=title_list[i].find('p',class_='info')content=content.text.strip()item['title']=title#item['link']=linkitem['content']=contentyield item#根据文章链接,发送request请求,并传递item参数#yield scrapy.Request(url=link,meta={'item':item},callback=self.parse2)#def parse2(self,response):#接收传递的item#item=response.meta['item']#解析提取文章内容#soup=BeautifulSoup(response.text,"lxml")#content=soup.find('p',class_='info')#content=content.text.strip()#content=content.text.strip()#content=content.replace('\n'," ")#print('hello,content',content)#item['content']=content#返回item,交给item pipeline#yield item
再看并行版:
# -*- coding: utf-8 -*-
import scrapy
from bs4 import BeautifulSoup
from financeSpider.items import FinancespiderItem
#从这个工程fianceSpider.items中引入FinancespiderItemclass FinanceSpider(scrapy.Spider):name = 'finance'allowed_domains = ['finance.eastmoney.com']start_urls = ['http://finance.eastmoney.com/news/cywjh_1.html']url_head='http://finance.eastmoney.com/news/cywjh_'url_end='.html'def start_requests(self):#获取前3页的url地址for i in range(1,4):url=self.url_head+str(i)+self.url_endprint('当前页面是:',url)#对新闻列表发送Request请求yield scrapy.Request(url=url,callback=self.parse)def parse(self, response):#response.encoding=response.apparent_encodingsoup=BeautifulSoup(response.text,'lxml')title_list=soup.find_all('div',class_='text')for i in range(len(title_list)):#将数据封装到FinancespiderItem对象,字典型数据item=FinancespiderItem()title=title_list[i].find('p',class_='title')title=title.a.text.strip()link=title_list[i].a['href']#变成字典#content=title_list[i].find('p',class_='info')#content=content.text.strip()item['title']=title#item['link']=link#item['content']=content#yield item#根据文章链接,发送request请求,并传递item参数yield scrapy.Request(url=link,meta={'item':item},callback=self.parse2)def parse2(self,response):#接收传递的itemitem=response.meta['item']#解析提取文章内容soup=BeautifulSoup(response.text,"lxml")content=soup.find('div',class_='b-review')content=content.text.strip()#content=content.text.strip()#content=content.replace('\n'," ")#print('hello,content',content)item['content']=content#返回item,交给item pipelineyield item
修改数据的存储文件pipelines.py,修改后如下:
class FinancespiderPipeline(object):#如果是反斜杠'\'记得转义file_path='C:\\Users\\Heisenberg\\Desktop\\financeSpider\\result.txt'def __init__(self):self.article=open(self.file_path,"w",encoding="utf-8")#定义管道的处理方法def process_item(self, item, spider):title=item['title']link=item['link']content=item['content']output=title+'\n'+link+'\n'+content+'\n'print('hello,output',output)self.article.write(output)return item
然后务必将settings.py的ITEM_PIPELINES取消注释
完成上述操作后在cmd中运行:
scrapy crawl finance
结果如下
发现问题是:并行版,文件存储的不是按照顺序存储的,是随机的,看爬取时间先后
并行版
普通版:
scrapy工程文件下载链接:financeSpider
财经新闻数据scrapy实战(东方财富网)相关推荐
- 前嗅教你大数据:采集东方财富网数据
l 采集场景 [场景描述]采集东方财富网行情中心沪深京A股数据. [使用工具]前嗅ForeSpider数据采集系统,免费下载: ForeSpider免费版本下载地址 l采集网站 [入口网址] htt ...
- Windows下利用python+selenium+firefox爬取动态网页数据(爬取东方财富网指数行情数据)
由于之前用urlib和request发现只能获取静态网页数据,目前爬取动态网页有两种方法, (1)分析页面请求 (2)Selenium模拟浏览器行为(霸王硬上弓),本文讲的就是此方法 一.安装sele ...
- 爬取东方财富网数据笔记
小白是如何学习爬虫的?首先先从简单的入手,在b站上寻找爬虫视频,这里推荐Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili 有编程基础的仅需要观 ...
- python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)
需求:将东方财富网行情中心的股票数据爬取下来,包括上证指数.深圳指数.上证A股.深圳A股.新股.中小板.创业板 等 一.目标站点分析 东方财富网的行情中心页面包含了所有股票信息.在左侧的菜单栏中包含了 ...
- python爬取东方财富网资金流向数据(在本地生成csv文件)
今天我们来试着用python爬取东方财富网资金流向的表格数据. 第一步:程序及应用的准备 首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的c ...
- python中requests库获取东方财富网动态指数行情数据
利用python中requests获取动态股市指数行情数据 这里数据来源为东方财富网,代码如下: #coding="utf-8" import requests from time ...
- 基于Spyder(Python 3.8)网络爬虫东方财经股票数据
基于Python爬取豆瓣电影排行榜单的博主经验,本文将爬取东方股票的某些数据. 代码来自网络且基于此稍有改编. 一.Anaconda是什么? 简单来说,Anaconda是Python的包管理器和环境管 ...
- 利用python爬取东方财富网股吧评论并进行情感分析(一)
利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论.涉及内容在前人的研究基础之 ...
- 基础爬虫记~豆瓣+东方财富网爬虫
基础小白,大佬轻点喷~ 一.基础豆瓣爬虫 1.首先在某站上听讲解,简单建立起了对爬虫的基础框架,具体包括五个板块(当然 有些东西看个人 可写成函数 也可以直接写 但重复用到的东西建议写函数) 用到了下 ...
最新文章
- 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
- Android事件机制:事件传递和消费
- Java Web学习总结(13)——JSP入门
- java程序设计 徐红_Java程序设计-徐红 王灿
- python列表的嵌套,Python检查列表是否嵌套
- Python的map方法的应用
- SARscape_5.2.0和SARscape_5.2.1安装包下载
- 公用表表达式(CTE)的递归调用
- Android 滑动效果基础篇(四)—— Gallery + GridView
- 【SAS NOTES】if then和if的区别
- linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
- SpringBoot 整合Shiro Ehcache
- linux 系统调用_Linux系统调用初学者指南
- shell 免杀aspx_记一次aspx网站渗透
- poi 拆分带图片的word_POI导出简单的带有图片的Word文档
- java私塾设计模式_Java私塾:研磨设计模式 之 访问者模式(Visitor)
- python浙江大学出版社_大学计算机公共基础课如何改革?浙江高校积极探索以Python课程为主导的教学实践...
- C#中Panel控件和GroupBox控件(未完成)
- 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
- Opencv源码之平面点集的最小包围圆
热门文章
- html5自动提示插件,jquery万能浮动框提示插件
- playsound播放中文名歌曲时,可以在歌曲名中加上空格正常播放音乐
- 云原生写进上海 “十四五” | 上海市信息服务业行业协会领导一行调研「DaoCloud 道客」
- SpringBoot中如何灵活的实现接口数据的加解密...
- 1970年建立的网站?30年前中国的网站?
- 无锡蓝海华腾技术有限公司企业调研
- pythom 安装MySQL-pythom的问题
- 基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql)
- 那些电影中黑化的人工智能,你了解多少?
- 惠普elitebook系列电脑 安装新固态不识别处理方法