先看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实战(东方财富网)相关推荐

  1. 前嗅教你大数据:采集东方财富网数据

     l 采集场景 [场景描述]采集东方财富网行情中心沪深京A股数据. [使用工具]前嗅ForeSpider数据采集系统,免费下载: ForeSpider免费版本下载地址 l采集网站 [入口网址] htt ...

  2. Windows下利用python+selenium+firefox爬取动态网页数据(爬取东方财富网指数行情数据)

    由于之前用urlib和request发现只能获取静态网页数据,目前爬取动态网页有两种方法, (1)分析页面请求 (2)Selenium模拟浏览器行为(霸王硬上弓),本文讲的就是此方法 一.安装sele ...

  3. 爬取东方财富网数据笔记

    小白是如何学习爬虫的?首先先从简单的入手,在b站上寻找爬虫视频,这里推荐Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili 有编程基础的仅需要观 ...

  4. python如何爬虫股票数据_简单爬虫:东方财富网股票数据爬取(python_017)

    需求:将东方财富网行情中心的股票数据爬取下来,包括上证指数.深圳指数.上证A股.深圳A股.新股.中小板.创业板 等 一.目标站点分析 东方财富网的行情中心页面包含了所有股票信息.在左侧的菜单栏中包含了 ...

  5. python爬取东方财富网资金流向数据(在本地生成csv文件)

    今天我们来试着用python爬取东方财富网资金流向的表格数据. 第一步:程序及应用的准备 首先我们需要安装selenium库,使用命令pip install selenium;然后我们需要下载对应的c ...

  6. python中requests库获取东方财富网动态指数行情数据

    利用python中requests获取动态股市指数行情数据 这里数据来源为东方财富网,代码如下: #coding="utf-8" import requests from time ...

  7. 基于Spyder(Python 3.8)网络爬虫东方财经股票数据

    基于Python爬取豆瓣电影排行榜单的博主经验,本文将爬取东方股票的某些数据. 代码来自网络且基于此稍有改编. 一.Anaconda是什么? 简单来说,Anaconda是Python的包管理器和环境管 ...

  8. 利用python爬取东方财富网股吧评论并进行情感分析(一)

    利用python爬取东方财富网股吧评论(一) python-东方财富网贴吧文本数据爬取 分享一下写论文时爬数据用到的代码,有什么问题或者改善的建议的话小伙伴们一起评论区讨论.涉及内容在前人的研究基础之 ...

  9. 基础爬虫记~豆瓣+东方财富网爬虫

    基础小白,大佬轻点喷~ 一.基础豆瓣爬虫 1.首先在某站上听讲解,简单建立起了对爬虫的基础框架,具体包括五个板块(当然 有些东西看个人 可写成函数 也可以直接写 但重复用到的东西建议写函数) 用到了下 ...

最新文章

  1. 1503 - A PRIMARY KEY must include all columns in the table's partitioning function
  2. Android事件机制:事件传递和消费
  3. Java Web学习总结(13)——JSP入门
  4. java程序设计 徐红_Java程序设计-徐红 王灿
  5. python列表的嵌套,Python检查列表是否嵌套
  6. Python的map方法的应用
  7. SARscape_5.2.0和SARscape_5.2.1安装包下载
  8. 公用表表达式(CTE)的递归调用
  9. Android 滑动效果基础篇(四)—— Gallery + GridView
  10. 【SAS NOTES】if then和if的区别
  11. linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
  12. SpringBoot 整合Shiro Ehcache
  13. linux 系统调用_Linux系统调用初学者指南
  14. shell 免杀aspx_记一次aspx网站渗透
  15. poi 拆分带图片的word_POI导出简单的带有图片的Word文档
  16. java私塾设计模式_Java私塾:研磨设计模式 之 访问者模式(Visitor)
  17. python浙江大学出版社_大学计算机公共基础课如何改革?浙江高校积极探索以Python课程为主导的教学实践...
  18. C#中Panel控件和GroupBox控件(未完成)
  19. 图文并茂 RAID 技术全解 – RAID0、RAID1、RAID5、RAID100
  20. Opencv源码之平面点集的最小包围圆

热门文章

  1. html5自动提示插件,jquery万能浮动框提示插件
  2. playsound播放中文名歌曲时,可以在歌曲名中加上空格正常播放音乐
  3. 云原生写进上海 “十四五” | 上海市信息服务业行业协会领导一行调研「DaoCloud 道客」
  4. SpringBoot中如何灵活的实现接口数据的加解密...
  5. 1970年建立的网站?30年前中国的网站?
  6. 无锡蓝海华腾技术有限公司企业调研
  7. pythom 安装MySQL-pythom的问题
  8. 基于javaweb的仿天猫商城系统(java+jsp+springboot+ssm+mysql)
  9. 那些电影中黑化的人工智能,你了解多少?
  10. 惠普elitebook系列电脑 安装新固态不识别处理方法