前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人人都能做爬虫 | Python爬虫工具Scrapy入门案例介绍(1) | 基础技能包

人人都能做爬虫 | Python爬虫工具Scrapy入门案例介绍(1) | 基础技能包

作者头像
用户7623498
发布2020-08-04 15:59:44
7350
发布2020-08-04 15:59:44
举报

人工智能技术的发展离不开大量数据的支撑,如何从浩瀚的互联网世界中获取需要的数据是必须掌握的一项技能,而爬虫技术是一项老少皆宜能够很好解决上述问题的手段,不管是做智能投顾还是做舆情分析,不管是图像数据还是文字数据,合理利用爬虫技术获取想要的数据,是智能技术在各行各业广泛应用的重要基础。本文将结合一个简单的案例对Python环境下的Scrapy爬虫框架进行介绍,希望可以让初学者能够快速的找到当爬虫的感觉。

步骤1:安装 Scrapy 爬虫框架

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取爬虫框架,用于抓取web站点并从页面中提取结构化的数据。如果想系统的学习Scrapy教程,推荐网站:http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html ,。

本文是给出一个直观的案例,因此就直接安装使用了,在cmd命令提示符中输入:

pip install Scrapy

安装完成后检查Scrapy是否安装完成,输入命令scrapy – v,如果出现下图结果,说明安装成功。

但很不幸,大部分人都会出现“'scrapy' 不是内部或外部命令,也不是可运行的程序或批处理文件。”这样的提示,这说明安装并没有成功,此时需要切换到手动安装。

手动安装就是下载相应的模块,可以度娘找到手动安装教程,本人用的是Anaconda 3,自带Python 3.6版本,手动安装时只需要安装Twisted和Scrapy两个whl文件模块,模块下载网站https://www.lfd.uci.edu/~gohlke/pythonlibs/ ,下载时根据操作系统和Python版本选择对应文件,安装命令为:

pip install Twisted-18.4.0-cp36-cp36m-win_amd64.whl

pip install Scrapy-1.5.0-py2.py3-none-any.whl

注:本人最初安装的是Anaconda3,默认python版本是3.6,而pip版本号是9.0.1,此时pip命令报错显示无法安装,解决方法是更新pip至最新版本,更新方式为在 Windows命令提示符(cmd)中输入:python -m pip install -U pip。

步骤2:初始化一个Scrapy项目

目前,Scrapy项目的初始化还需通过手动方式进行,创建方式为在cmd命令提示符中输入:scrapy startproject [项目名称],需要说明的是该命令执行后,会在当前命令符指向目录中创建以项目名称为名字的文件夹,因此在创建之前,先选择好创建地址。

往下我们将结合一个案例讲解如何在python下使用Scrapy爬虫,这个例子是从一个电影网站(美剧天堂:http://www.meijutt.com/new100.html)抓取最新更新的美剧名目。

首先,在 Windows命令提示符(cmd)中输入:

scrapy startproject movie

其次,创建爬虫程序,爬虫程序需要进入到创建的movie目录下创建,具体如下:

cd movie

scrapy genspider meiju meijutt.com

通常,创建爬虫文件都是用网站域名命名。到这里,所有的准备工作就做完了,在movie文件夹中应该会看到下述文件:

几个关键文件的定位如下:

• scrapy.cfg:项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。

• items.py:设置数据存储模板,用于结构化数据。

• pipelines.py:数据处理行为,如一般结构化的数据持久化等。

• settings.py:配置文件,如递归的层数、并发数,延迟下载等。

• spiders:爬虫目录,最核心的爬虫代码放在这个目录下,本案例为meiju.py。

步骤3:代码编写

(1)items.py

主要用于设置数据存储模板,本案例代码如下:

import scrapy

class MovieItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

name = scrapy.Field()

(2)meiju.py

核心的爬虫代码,也是最体现功力和工作量的地方,本案例代码如下:

# -*- coding: utf-8 -*-

import scrapy

from movie.items import MovieItem

class MeijuSpider(scrapy.Spider):

name = "meiju"

allowed_domains = ["meijutt.com"]

start_urls = ['http://www.meijutt.com/new100.html']

def parse(self, response):

movies = response.xpath('//ul[@class="top-list fn-clear"]/li')

for each_movie in movies:

item = MovieItem()

item['name'] = each_movie.xpath('./h5/a/@title').extract()[0]

yield item

这里name = "meiju"定义了爬虫工具的名字为“meiju”,后续爬虫执行时直接输入这个名字。

(3)settings.py

此文档用于设置配置文件,本案例增加如下代码

ITEM_PIPELINES = {'movie.pipelines.MoviePipeline':100}

(4)pipelines.py

此处编写数据处理脚本,如数据存储等在这里进行编写,本案例代码如下

class MoviePipeline(object):

def process_item(self, item, spider):

with open("my_meiju.txt",'a') as fp:

fp.write(item['name'] + ' ')

步骤4:执行爬虫

爬虫带来的那种从大量繁琐低价值体力劳动中解放出来的快感,个人感觉是其最大的魅力所在,而到这里,就可以开始通透的体验一下爬虫程序的威力了。

在 Windows命令提示符(cmd)中,进入到项目“movie”目录下,输入下述命令scrapy crawl meiju,系统自动开始爬文件,存信息。本案例最后的结果存储在项目文件下的“my_meiju.txt”文件中,结果如下:

本文案例来自于https://www.cnblogs.com/kongzhagen/p/6549053.html ,对pipelines.py的代码做了适当修改,本来想借用校花网那个案例,无奈校花网登不上去了,比较遗憾,不过感谢作者孔扎根给我们带来了非常好的两个案例。同时,爬虫技术其实可以干很多想得到和想不到的很有意思的事情,掌握了基本的套路之后,后面就看各位丰富的想象力了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 决策智能与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档