# Python网络爬虫Scrapy框架研究
Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。 Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类, 如BaseSpider、sitemap爬虫等,还有对web2.0爬虫的支持。
Scrach是抓取的意思,这个Python的爬虫框架叫Scrapy,大概也是这个意思吧,就叫它:小刮刮吧。
基于最新的Scrapy 1.0编写,已更新至Python3.6
最新文章列表的爬取
采集的数据放入MySQL数据库中,并且包含标题,发布日期,文章来源,链接地址等等信息
URL去重复,程序保证对于同一个链接不会爬取两次
防止封IP策略,如果抓取太频繁了,就被被封IP,目前采用三种策略保证不会被封:
模拟登录后的爬取
针对RSS源的爬取
对于每个新的爬取目标网站,或者原来的网站格式有变动的时候,需要做到可配置, 只修改配置文件即可,而不是修改源文件,增加一段爬虫代码,主要是用xpath配置爬取规则
定时爬取,设置定时任务周期性爬取
与微信公共平台的结合,给大量的订阅号随机分配最新的订阅文章。
利用scrapy-splash执行页面javascript后的内容爬取
web文件夹是静态html网站源文件。先开启一个简单HTTP服务器:
cd web/
python -m http.server 8000
将数据爬取到https://appery.io,然后制作一个手机APP演示数据
pip install --upgrade scrapyapperyio
为了在python3下顺利运行,需要安装后修改源码scrapyapperyio.py,大概第21行改成:
try:
from urllib import urlencode
except ImportError:
from urllib.parse import urlencode
去网站https://scrapyappery.io注册账号,创建数据库scrapy,并新建集合mobile,拿到配置然后修改配置文件:
ITEM_PIPELINES = {
'scrapyapperyio.ApperyIoPipeline': 300,
}
APPERYIO_DB_ID = '5cca7e2b0f0d3113cd9569fd'
APPERYIO_USERNAME = 'root'
APPERYIO_PASSWORD = 'pass'
APPERYIO_COLLECTION_NAME = 'mobile'
首先弄一个需要登录的网站。这里直接用flaskr作为例子
本地安装好flaskr后,可通过http://127.0.0.1:5000/
访问主页,如果要访问http://127.0.0.1:5000/create
,
则需要登录,如果没有登录会跳转至登录页http://127.0.0.1:5000/auth/login
为了演示,先手动登录后发表几篇文章,然后通过爬虫将这些文章爬取下来。 登录爬虫除了能把首页文章爬取下来,还能进入新建文章的页面,将里面的内容也爬取下来。
使用github登录https://scrapinghub.com/,然后创建一个project,复制API Key
配置scrapy.cfg
[settings]
default = ch04.settings
[deploy]
username = 9e4febf7651e45c3a4e5622d84e045b2
password =
project = 389092
然后在统计目录下面新建scrapinghub.yml,配置如下
apikey: 9e4febf7651e45c3a4e5622d84e045b2
project: 389092
stacks:
default: scrapy:1.6-py3
然后安装 pip install shub
登录:shub login
,输入API key,如果上面已经配置过,则可以直接按Enter,然后执行
shub depoy
发布完成后,可以去scrapinghub后台,可以呀看到一个名字为hub的spider。然后创建一个新的Periodic Job,并指定爬虫名为hub即可。
不过定时任务爬虫需要订阅才能运行了,不过可以选择直接点击run来运行一次。或者在Spider上面直接点击Run也可以
运行完成后,可以选择将Items导出为csv、json等格式文件
Copyright (c) 2014-2016 Xiong Neng
基于 MIT 协议发布: http://www.opensource.org/licenses/MIT
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。