一步步教你利用Github开源项目实现网络爬虫:以抓取证券日报新闻为例

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

在学习编程的过程中,初学者(特别是想转行互联网的来自其它专业的初学者)往往因为缺乏实际项目的操作而陷入基础学习的环境中无法自拔,在学习Python的过程中,笔者最初也是一直停留在不断地print、列表、数组、各种数据结构的学习里,当然基础知识的学习很重要,但是没有项目的实际操作,往往无法得到提高并会心生厌倦,为了应对这个问题,接下来专栏将从Github开源项目选取一些比较有意思的项目,来为大家说明如何开展项目,如何安装环境,如何debug,如何找到解决问题的方法......

我们以抓取财经新闻的爬虫为例,默认centos系统、Python2.7环境,并且已经安装pyenv,如未安装pyenv请参考:

基于pyenv和virtualenv搭建python多版本虚拟环境

项目作者: 
Hailong Zhang 
项目地址: 
Scrapy Spider for 各种新闻网站 
感谢作者开源

1. 首先准备项目开发环境

$cd /home/andy/.pyenv/ENV2.7.10 
$ mkdir works 
$ cd works 
$ pyenv activate ENV2.7.10 
$ sudo yum install gcc libffi-devel openssl-devel libxml2 libxslt-devel libxml2-devel python-devel -y
$ sudo yum install python-setuptools

2. 依次安装pip、lxml、scrapy

$ easy_install pip 
$ easy_install lxml 
$ pip install scrapy

3. 从github克隆项目

$ mkdir spiders 
$ git clone https://github.com/hailong0707/spider_news_all
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

4. 查看README.md项目文档
$ cd spider_news_all 
$ ls 
$ vim README.md
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
5. 安装环境及数据库存储连接用的MySQL-python模块
$ sudo yum install python-devel 
$ sudo yum install mysql-devel 
$ pip install MySQL-python 
$ pip install bs4

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
6. 创建新的与爬虫项目匹配的数据库和配置爬虫项目MySQLdb的连接账号密码 进入MySQL创建存储数据的数据库、表,记得刷新权限: 

mysql> create database news; 
mysql> grant all privileges on news.* to username@localhost identified by 'passwd'; 
mysql> flush privileges;

在db.sql的同级目录加载数据库表结构

$ mysql -u root -p 
$ source db.sql

配置与数据库对应的爬虫系统的MySQLdb的连接账号密码:

$ vim pipelines.py 
$ vim zqrb.py

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
7. 安装screen,运行项目,以抓取证券日报新闻为例,命名screen名称zqrb
$ sudo yum install screen 
$ screen -S zqrb 
$ scrapy crawl zqrb

8. Debug,直接运行会发现报错,debug完再运行

AttributeError: 'list' object has no attribute 'iteritems'

查看项目的github主页,在Issues里有人已经提出解决方案,修改setting.py

ITEM_PIPELINES = { 'spider_news_all.pipelines.SpiderNewsAllPipeline': 300 }

修改之后再次运行,Great!Ctrl+A+D退出screen返回终端,让爬虫继续运行,Linux中可以利用crontab执行定时任务,比如可以设置每天晚上0点定时开启爬虫抓取。

$ scrapy crawl zqrb
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

原文发布时间为:2016-10-08
本文作者:知乎@橙哥
本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区”微信公众号

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
数据采集 存储 C#
C# 爬虫技术:京东视频内容抓取的实战案例分析
C# 爬虫技术:京东视频内容抓取的实战案例分析
|
16天前
|
数据采集 JavaScript 前端开发
构建简易Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字信息的时代,数据抓取成为获取网络资源的重要手段。本文将引导你通过Python编写一个简单的网页爬虫,从零基础到实现数据抓取的全过程。我们将一起探索如何利用Python的requests库进行网络请求,使用BeautifulSoup库解析HTML文档,并最终提取出有价值的数据。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开数据抓取的大门。
|
18天前
|
JavaScript 前端开发 Java
Github 2024-08-01 开源项目月报 Top17
根据Github Trendings统计,2024年8月共有17个项目上榜。按开发语言分类,项目数量如下:Python项目6个,非开发语言项目与TypeScript项目各4个,JavaScript项目3个,Java、Go及Vue项目各1个。其中,免费编程学习平台freeCodeCamp.org以381,011个Star数领先,提供全栈网页开发和机器学习课程。其他项目涵盖编程书籍、API集合、低代码开发平台等多种资源。
17 1
|
21天前
|
数据采集
爬虫抓取数据过程中代理IP频繁掉线:以Kookeey为例的解决方案
在数据抓取过程中,代理IP不可或缺,但其频繁掉线问题严重影响效率。本文以Kookeey为例,探讨解决之道:1)深入理解掉线原因,审慎选择稳定的服务商; 2)保持代理IP更新并合理配置使用参数; 3)在程序中集成错误处理与重试逻辑; 4)必要时升级至更优质的服务; 5)主动与服务商沟通寻求支持; 6)探索替代抓取策略,如调整抓取节奏或采用分布式架构。这些措施有助于显著提升抓取成功率及稳定性。
|
25天前
|
网络协议 Go Windows
【应用服务 App Service】App Service中抓取网络日志
【应用服务 App Service】App Service中抓取网络日志
|
25天前
|
监控 网络协议 Linux
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?
|
1月前
|
SQL 运维 安全
GitHub爆赞的Web安全防护指南,网络安全零基础入门必备教程!
web安全现在占据了企业信息安全的很大一部分比重,每个企业都有对外发布的很多业务系统,如何保障web业务安全也是一项信息安全的重要内容。 然而Web 安全是一个实践性很强的领域,需要通过大量的练习来建立对漏洞的直观认识,并积累解决问题的经验。 Web安全与防护技术是当前安全界关注的热点,今天给小伙伴们分享的这份手册尝试针对各类漏洞的攻防技术进行体系化整理,从漏洞的原理到整体攻防技术演进过程进行详细讲解,从而形成对漏洞和web安全的体系化的认识。
|
17天前
|
数据采集 JavaScript 前端开发
构建你的第一个Python爬虫:抓取网页数据入门指南
【8月更文挑战第31天】在数字时代,数据是新的石油。本文将引导初学者通过简单的步骤,使用Python编程语言创建一个基础的网络爬虫程序。我们将探索如何从网络上提取信息,并理解背后的原理。无论你是编程新手还是想要扩展你的技术工具箱,这篇文章都将为你提供一条清晰的道路,让你学会编写能够自动获取网络数据的脚本。准备好开始你的网络数据抓取之旅了吗?让我们现在就开始吧!
|
17天前
|
数据采集 JavaScript 前端开发
Python 爬虫实战:抓取和解析网页数据
【8月更文挑战第31天】本文将引导你通过Python编写一个简单的网络爬虫,从网页中抓取并解析数据。我们将使用requests库获取网页内容,然后利用BeautifulSoup进行解析。通过本教程,你不仅能够学习到如何自动化地从网站收集信息,还能理解数据处理的基本概念。无论你是编程新手还是希望扩展你的技术工具箱,这篇文章都将为你提供有价值的见解。
|
17天前
|
数据采集 存储 JavaScript
构建你的首个Python网络爬虫:抓取、解析与存储数据
【8月更文挑战第31天】在数字时代的浪潮中,数据成为了新的石油。了解如何从互联网的海洋中提取有价值的信息,是每个技术爱好者的必备技能。本文将引导你通过Python编程语言,利用其强大的库支持,一步步构建出你自己的网络爬虫。我们将探索网页请求、内容解析和数据存储等关键环节,并附上代码示例,让你轻松入门网络数据采集的世界。