Scrapy入门示例程序

1、安装Scrapy

参考文档

官方指导文档,Scrapy 2.5 documentation — Scrapy 2.5.1 documentation

scrapy的中文指导文档,Scrapy 1.0 文档(未完成,只更新了intro部分,请谨慎参考) — Scrapy 1.0.5 文档

scrapy是使用纯python语言开发的,所以安装scrapy之前需要先安装scrapy需要依赖的python库,用到的依赖库有以下几个:

编号依赖库安装命令简介
1lxmlpip install lxmllxml · PyPI
2parselpip install parselparsel · PyPI
3w3libpip install w3libw3lib · PyPI
4twistedpip install TwistedTwisted · PyPI
5cryptographypip install cryptographycryptography · PyPI
6pyOpenSSLpip install pyOpenSSLpyOpenSSL · PyPI

安装完成之后检查是否安装成功

scrapy对其中3个依赖包有最小版本的要求

  • Twisted 14.0

  • lxml 3.4

  • pyOpenSSL 0.14

最后安装Scrapy

pip install Scrapy 

二、Scrapy简单示例

大家休闲的时候都喜欢看电影,那我们就以腾讯视频为例,写一个简单的小爬虫。抓取一下腾讯视频里边目前的喜剧推荐榜单(电影频道 - 腾讯视频)。

1、使用scrapy创建工程

scrapy startproject movies

2、创建爬虫程序

cd movies

scrapy genspider qqmovie v.qq.com

scrapy会帮我们创建一个工程,我们只需要在对应的文件中编写我们需要抓取的内容即可 

2、设置抓取的数据模板

items.py

import scrapy

class MoviesItem(scrapy.Item):
    # define the fields for your item here like:
    # 电影名称
    name = scrapy.Field()
    # 主演
    starring = scrapy.Field()
    # pass

 3、编写爬虫

qqmovie.py

首先需要查看网页的源代码,确定我们要抓取的数据在html中的格式,以chrome浏览器为例,右键可以查看网页源代码

通过查看源代码,我们发现电影信息是被保存在一个class为list_item的div标签中 

 所以我们的爬虫代码需要这么写

import scrapy
from movies.items import MoviesItem


class QqmovieSpider(scrapy.Spider):
    name = 'qqmovie'
    allowed_domains = ['v.qq.com']
    # 抓取开始的URL
    start_urls = ['https://v.qq.com/channel/movie?listpage=1&channel=movie&itype=100004']
    
    def parse(self, response):
        # 通过class=list_item的div标签提取数据
        movies = response.xpath('//div[@class="list_item"]')
        for i in movies:
            item = MoviesItem()
            # 提取<a>标签的title作为名称
            item['name'] = i.xpath('./a/@title').get()
            # 提取<div>标签的title作为主演
            item['starring'] = i.xpath('./div/div/@title').get()
            yield item

 4、对抓取到的数据进行处理

piplines.py

from itemadapter import ItemAdapter


class MoviesPipeline:
    def process_item(self, item, spider):
        # 在此处处理数据
        with open('result.txt', 'a') as fp:
            print(item)
            fp.write(item['name'] + '  ')
            fp.write(item['starring'] + '\n')
        return item

5、设置配置文件

settings.py

# 遵守机器人协议,当然也可以不遵守
ROBOTSTXT_OBEY = True
# 下载间隙,单位是毫秒?
DOWNLOAD_DELAY = 1
# 请求头
DEFAULT_REQUEST_HEADERS = {
  'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language': 'en',
  'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36'
}
ITEM_PIPELINES = {'movies.pipelines.MoviesPipeline':10}

BOT_NAME = 'movies'

SPIDER_MODULES = ['movies.spiders']
NEWSPIDER_MODULE = 'movies.spiders'

6、运行爬虫

命令行输入
cd movies
scrapy crawl qqmovie

或者新建一个python文件
from scrapy import cmdline
cmd_str = 'scrapy crawl qqmovie'
cmdline.execute(cmd_str.split(' '))

7、查看运行结果

燃野少年的天空  主演:彭昱畅 许恩怡 张宥浩 尹正 孙芮 斯外戈
赌神  主演:周润发 王祖贤 刘德华 张敏
小偷阿星  主演:周星驰 方中信 胡慧中 陈观泰 顾美华
澳门风云3  主演:周润发 张家辉 刘德华 张学友 李宇春 刘嘉玲 余文乐
西游·降魔篇  主演:文章 舒淇 黄渤 罗志祥
唐人街探案3  主演:王宝强 刘昊然 妻夫木聪 托尼·贾 三浦友和 长泽雅美 浅野忠信 染谷将太 铃木保奈美 尚语贤 肖央 张子枫 邱泽 张钧甯 文咏珊
夏洛特烦恼  主演:沈腾 马丽 尹正 王智 艾伦 田雨 宋阳
倒霉特工熊  主演:汤水雨 杨默
欢乐喜剧人  主演:郭德纲 岳云鹏 罗温·艾金森 艾伦 张小斐 泰维 潘斌龙 孙越
我们的新生活  主演:李汶翰 许君聪 王锵 杨子姗 杨超越 蔡明 包文婧 蓝盈莹 张凯丽 王迅 张双利 于洋 白泽泽 杨迪 潘斌龙 邓超元 文松 姚弛
捉妖记2  主演:梁朝伟 白百何 井柏然 李宇春 杨祐宁
举起手来2:追击阿多丸号  主演:潘长江 郭达 刘薇
举起手来  主演:郭达 潘长江 刘小微 李明
龙拳小子  主演:刘芮麟 童飞 林秋楠 梁超 吴永伦
金装鬼打鬼  主演:林正英 楼南光 陈颖芝 金十二 谢伟杰 何沛东
开心鬼救开心鬼  主演:黄百鸣 黄家驹 杨宝玲 黄光亮 袁洁莹
羞羞的铁拳  主演:艾伦 马丽 沈腾 宋阳 田雨
国产凌凌漆  主演:周星驰 袁咏仪 陈宝莲 黄锦江 李健仁 罗家英 尹德拉·里奇 See·ho Leung 邓兆尊
超越  主演:郑恺 李昀锐 张榕容 曹炳琨 陆彭 李晨 张蓝心 金靖
功夫熊猫3  主演:杰克·布莱克 詹姆斯·洪 安吉丽娜·朱莉 塞斯·罗根
爱情公寓  主演:陈赫 袁弘 娄艺潇 邓家佳 孙艺洲 李佳航 李金铭
哪吒之魔童降世  主演:瀚墨 张珈铭
冰雪奇缘  公主拯救冰封王国
捉妖记  主演:白百何 井柏然 姜武 金燕玲 钟汉良
西游记之大圣归来  大圣脱胎换骨惊艳四方
恶棍天使  主演:邓超 孙俪 代乐乐 梁超 杨新鸣
恐龙王  恐龙父子大冒险
功夫之王  主演:成龙 李连杰 刘亦菲 迈克尔·安格拉诺
快手枪手快枪手  主演:林更新 张静初 腾格尔 刘晓庆 锦荣
鬼打鬼  主演:洪金宝 钟发 林正英 午马

附下载链接scrapy爬虫示例小程序-搜索引擎文档类资源-CSDN下载

抓table How to scrape HTML table using Scrapy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值