1.CentOS安装scrapy

安装工具包

[root@localhost ~]# yum groupinstall development
[root@localhost ~]# yum install libffi-devel python-devel openssl-devel  libxslt-devel

如果没有pip安装工具,安装pip
首先安装新的yum软件源,centos7自带的软件源没有pip

[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum install python-pip

安装scrapy:

[root@localhost ~]# pip install scrapy
[root@localhost ~]# pip install scrapy -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
[root@localhost ~]# scrapy -v #查看scrapy 版本

2.scrapy爬虫实例

采用scrapy框架进行爬取。现在一爬取51cto为例子。打开cmd,先用命令行,定位到某个目录,然后执行’scrapy startproject 项目名’,创建爬虫项目,然后打开item文件,代码如下:
创建爬虫项目:

scrapy startproject spiderCTO

紧接着如果想一键创建爬虫文件:

cd spiderCTO
scrapy genspider spiders #这种创建方式无效
scrapy genspider spiders '爬取的初始url'
#如:
scrapy genspider spiders example.com
Created spider 'spiders' using template 'basic' in module:jobs.spiders.crawl
# -*- coding: utf-8 -*-
import scrapy
class SpiderctoItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()title = scrapy.Field()url = scrapy.Field()score = scrapy.Field()hour = scrapy.Field()couse_long = scrapy.Field()student = scrapy.Field()price = scrapy.Field()updata = scrapy.Field()

接下来创建spiders文件里创建MySpider文件,即爬虫文件,代码如下:

# -*- coding: utf-8 -*-</code>import scrapyfrom spiderCTO.items import SpiderctoItemclass MySpider(scrapy.Spider):name = 'MySpider'start_urls = ['http://edu.51cto.com/center/course/index/list?edunav=&amp;page=1']def parse(self,response):item = SpiderctoItem()for box in response.xpath('.//div[@class="Page CourseList"]/div[@class="cList"]/div[@class="cList_Item"]'):item['title'] = box.xpath('div[@class="main"]/h3/a/text()').extract()[0]item['url'] = box.xpath('div[@class="pic"]/a/@href').extract()[0]item['score'] = box.xpath('div[@class="main"]/div[@class="stars02"]/text()').extract()[0].strip()item['student'] = box.xpath('div[@class="main"]/div/p[@class="fr"]/text()').extract()[0]item['price'] = box.xpath('div[@class="main"]/div[@class="price"]/h4/text()').extract()[0]yield scrapy.Request(item['url'],callback=self.parseNext,meta=item)def parseNext(self,response):item = response.metaitem['couse_long'] = response.xpath('.//div[@class="Info"]/div[@class="main   fr"]/div[@class="CourseTime"]/span/text()').extract()[0]item['hour'] = response.xpath('.//div[@class="Info"]/div[@class="main fr"]/div[@class="CourseTime"]/span/text()').extract()[1]item['updata'] = response.xpath('.//div[@class="Info"]/div[@class="main fr"]/div[@class="CourseTime"]/span/text()').extract()[2]yield itemfor x in range(2,162):page = 'http://edu.51cto.com/center/course/index/list?edunav=&amp;page=' + str(x)yield scrapy.Request(page,callback=self.parse)

接下来就是编写输出文件Pipeline.py,代码如下:

# -*- coding: utf-8 -*-</code># Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
#写入json# import codecs# import json# from scrapy.exceptions import DropItem# class SpiderctoPipeline(object):# def __init__(self):# self.file = open('data.json','w')# self.file = codecs.open('data.json','w',encoding='utf-8')# def process_item(self, item, spider):# line = json.dumps(dict(item),ensure_ascii=False) + '\n'# self.file.write(line)# return item
#写入数据库
from twisted.enterprise import adbapiimport pymysqlimport pymysql.cursorsclass SpiderctoPipeline(object):def __init__(self,dbpool):self.dbpool = dbpool@classmethoddef from_settings(cls,setting):dbpool=adbapi.ConnectionPool('pymysql',host='127.0.0.1',db='cto',user='root',password='123456',charset='utf8',cursorclass=pymysql.cursors.DictCursor,use_unicode=True)return cls(dbpool)def process_item(self, item, spider):self.dbpool.runInteraction(self.do_insert,item)def do_insert(self,cursor,item):insert_info = """insert into ctolist(title,url,score,hour,student,couse_long,price,updata)values (%s,%s,%s,%s,%s,%s,%s,%s)"""params = (item['title'],item['url'],item['score'],item['hour'],item['student'],item['couse_long'],item['price'],item['updata'])cursor.execute(insert_info,params)

最后就是把settings文件里设置ITEM_PIPELINES = {‘spiderCTO.pipelines.SpiderctoPipeline’: 1,}
如果想要定时执行爬虫,那就要创建一个定时文件:
一下就是一个定时文件(timeout.py),
然后再终端中执行该文件即可定时执行爬虫语句。
即:

python timeout.py
# -*- coding: utf-8 -*-
import schedule
import time
import os
import subprocess
def job():print("更新数据中。。。。")subprocess.Popen('scrapy crawl Myspider')
#每分钟执行爬虫
schedule.every().minutes.do(job)
#每小时执行
# schedule.every().hour.do(job)
#每天10点40执行
# schedule.every().day.at("10:40").do(job)
#每周一执行
# schedule.every().monday.do(job)
#每周三13点15分执行
# schedule.every().wednesday.at("13:15").do(job)while True:schedule.run_pending()time.sleep(1)

最后介绍一下Ubuntu安装scrapy

sudo apt-get install python-dev
sudo apt-get install libevent-dev
#其中python3.6是你电脑安装的scrapy版本
sudo apt-get install python-twisted-web python3.6-dev
pip install Scrapy

或者执行以下命令:

sudo apt-get update
sudo apt-get install python-pip python-lxml python-crypto python-cssselect python-openssl python-w3lib python-twisted python-dev libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
sudo pip install scrapy

在此过程中如果遇到print打印调试,在控制台不出结果的话,可以把settings中的ROBOTSTXT_OBEY设置为false:

ROBOTSTXT_OBEY = False

scrapy爬虫简单实例相关推荐

  1. python爬虫简单实例-爬取17K小说网小说

    什么是网络爬虫? 网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本. 爬虫流程 先由urllib的request打开Url得到网页html文档 ...

  2. Python Scrapy 爬虫简单教程

    导览 1. Scrapy install 2. Scrapy 项目创建 3. Scrapy 自定义爬虫类 4. Scrapy 处理逻辑 5. Scrapy 扩展 1. Scrapy install 准 ...

  3. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  4. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  5. python爬虫简单实例-这个Python爬虫的简单入门及实用的实例,你会吗?

    利用爬虫可以进行数据挖掘,比如可以爬取别人的网页,收集有用的数据进行整合和划分,简单的就是用程序爬取网页上的所有图片并保存在自己新建的文件夹内,还有可以爬社交网站的自拍图,将几十万张的图片合在一起,就 ...

  6. python爬虫简单实例-最简单爬虫示例(入门级)

    [实例简介] [实例截图] [核心代码] from lxml import etree import requests def handle_request(url): heades = { 'Use ...

  7. java 天气爬虫_java网页爬虫简单实例详解——获取天气预报。

    [本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里 ...

  8. 爬虫简单实例-爬取拼多多商品信息

    接口 https://youhui.pinduoduo.com/goods/goods-detail?goodsId=商品信息ID 思路 通过遍历商品信息ID来获取商品的信息, 1 ~ 9999999 ...

  9. python 写csv scrapy_scrapy爬虫框架实例一,爬取自己博客

    本篇就是利用scrapy框架来抓取本人的博客,博客地址:http://www.cnblogs.com/shaosks scrapy框架是个比较简单易用基于python的爬虫框架,相关文档:http:/ ...

  10. 简单scrapy爬虫实例

    简单scrapy爬虫实例 流程分析 抓取内容:网站课程 页面:https://edu.hellobi.com 数据:课程名.课程链接及学习人数 观察页面url变化规律以及页面源代码帮助我们获取所有数据 ...

最新文章

  1. memcpy()函数
  2. python教程书籍-程序员大佬,给Python零基础入门书籍教程的一些建议!
  3. matlab和vs2008联合编程
  4. python封装类在当前文件中使用_name_下调用不了_python提示这个是什么原因!
  5. 【GNN】谷歌、阿里、腾讯等在大规模图神经网络上必用的GNN加速算法
  6. boost::swap_ranges相关的测试程序
  7. java 正则表达式语法_Java 正则表达式基础语法
  8. python可以实现的功能_Python 实现某个功能每隔一段时间被执行一次的功能方法...
  9. 大数据平台构建常见问题
  10. Omni Recover适用于哪些IOS数据恢复方案?
  11. ISO19000-2000标准(转载)
  12. 免费直播系统源码,可控的跑马灯,无需焦点
  13. 常用正则表达式匹配Antconc英文句式搭配
  14. 免费抠人像、抠图网站
  15. 安装VS2010旗舰版时出现.Net framework4.0,安装失败
  16. 爬虫学习01 什么是爬虫 爬虫的分类
  17. 推荐 - 将多种格式的 Office 文件转换为 PPT 和图片
  18. mendelay为什么安装不了_方舟生存进化手游国际版出现解析包错误和解析包错误以及下载完无法安装这样应对...
  19. 02-20210222华为海思Hi3518EV300鸿蒙系统的编译
  20. 28335的启动步骤介绍

热门文章

  1. H750/H755 安装centos系统
  2. 计算机无法外接投影,电脑连不上投影仪怎么办
  3. nginx 代理oss图片,带权限控制
  4. 用PS制作GIF动图
  5. tp6 使用 redis
  6. win10 教育版本变专业版本
  7. Win7 SP1 安装 .NET Framework 4.6.2,提示“时间戳签名和或证书无法验证或已损坏”
  8. 前端基础之HTML特殊字符集和表情集
  9. 怎么做网站,网站制作步骤有哪些?
  10. 12、添加和删除页码符号