Python爬虫开发【第1篇】【Scrapy入门】

Scrapy的安装介绍

Scrapy框架官方网址:http://doc.scrapy.org/en/latest

Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

Windows 安装方式

  • Python 2 / 3
  • 升级pip版本:pip install --upgrade pip
  • 通过pip 安装 Scrapy 框架pip install Scrapy

具体Scrapy安装流程参考:http://doc.scrapy.org/en/latest/intro/install.html#intro-install-platform-notes

目标

  • 创建一个Scrapy项目
  • 定义提取的结构化数据(Item)
  • 编写爬取网站的 Spider 并提取出结构化数据(Item)
  • 编写 Item Pipelines 来存储提取到的Item(即结构化数据)

1.新建项目(scrapy startproject)

  • 在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行下列命令:
  • scrapy startproject mySpider
  • 创建项目mySpider,目录及主要文件作用:
    • scrapy.cfg :项目的配置文件
    • mySpider/ :项目的Python模块,将会从这里引用代码
    • mySpider/items.py :项目的目标文件
    • mySpider/pipelines.py :项目的管道文件
    • mySpider/settings.py :项目的设置文件mySpider/spiders/ :存储爬虫代码目录

2.明确目标(mySpider/items.py)

目标:抓取http://www.itcast.cn/channel/teacher.shtml 网站里的所有讲师的姓名、职称和个人信息

步骤:

  1. 打开mySpider目录下的items.py
  2. Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误。
  3. 可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field的类属性来定义一个Item(可以理解成类似于ORM的映射关系)。
  4. 接下来,创建一个ItcastItem 类,和构建item模型(model)。
import scrapy

class ItcastItem(scrapy.Item):
    name = scrapy.Field()
    level = scrapy.Field()
    info = scrapy.Field()

3.制作爬虫 (spiders/itcastSpider.py)

①.爬数据

 在当前目录下输入命令,将在mySpider/spider目录下创建一个名为itcast的爬虫,并指定爬取域的范围:

scrapy genspider itcast "itcast.cn"  

 打开 mySpider/spider目录里的 itcast.py,默认增加了下列代码:

import scrapy

class ItcastSpider(scrapy.Spider):
    name = "itcast"
    allowed_domains = ["itcast.cn"]
    start_urls = (
        ‘http://www.itcast.cn/‘,
    )

    def parse(self, response):
        pass

要建立一个Spider, 须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。

  A:name = "" ,爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。

  B:allow_domains = [] ,搜索的域名范围,即爬虫的约束区域,规定爬虫只爬不存在的URL会被忽略。

  C:start_urls = () ,爬取的URL元组/列表。

    爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

  D:parse(self, response),解析方法,每个初始URL完成下载后将被调用,调用的时候传入从每一个URL传回的Response对象来作为唯一参数,主要作用如下:

    • 负责解析返回的网页数据(response.body),提取结构化数据(生成item)
    • 生成需要下一页的URL请求。
将start_urls的值修改为需要爬取的第一个url
start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)
修改parse()方法
def parse(self, response):
    filename = "teacher.html"
    open(filename, ‘w‘).write(response.body)
运行程序,即可得到爬取的网页信息

②.取数据

 爬取整个网页完毕,接下来的就是取数据

 观察网页源码样式,选择合适方法提取数据

 将之前在mySpider/items.py 里定义的ItcastItem类引入 :

from mySpider.items import ItcastItem

 将得到的数据封装到一个 ItcastItem 对象中,可以保存每个老师的属性: 

from mySpider.items import ItcastItem

def parse(self, response):
    #open("teacher.html","wb").write(response.body).close()

    # 存放老师信息的集合
    items = []

    for each in response.xpath("//div[@class=‘li_txt‘]"):
        # 将我们得到的数据封装到一个 `ItcastItem` 对象
        item = ItcastItem()
        #extract()方法返回的都是unicode字符串
        name = each.xpath("h3/text()").extract()
        title = each.xpath("h4/text()").extract()
        info = each.xpath("p/text()").extract()

        #xpath返回的是包含一个元素的列表
        item[‘name‘] = name[0]
        item[‘title‘] = title[0]
        item[‘info‘] = info[0]

        items.append(item)

    # 直接返回最后数据
    return items

③.保存数据 

scrapy保存信息的最简单的方法主要有四种,-o 输出指定格式的文件,,命令如下:
# json格式,默认为Unicode编码
scrapy crawl itcast -o teachers.json

# json lines格式,默认为Unicode编码
scrapy crawl itcast -o teachers.jsonl

# csv 逗号表达式,可用Excel打开
scrapy crawl itcast -o teachers.csv

# xml格式
scrapy crawl itcast -o teachers.xml

  

 

原文地址:https://www.cnblogs.com/loser1949/p/9461882.html

时间: 2024-11-01 20:48:26

Python爬虫开发【第1篇】【Scrapy入门】的相关文章

Python爬虫开发

1. 语法入门 Python教程 2. 爬虫学习系列教程 1)宁哥的小站 https://github.com/lining0806/PythonSpiderNotes 2)Python爬虫开发 3)Python爬虫学习系列教程

记一次Python爬虫开发经历

为啥要做Python爬虫,是因为我去找电影的某个网站有点坑,它支持tag标签查询自己喜欢的电影,但是不支持双标签或者三标签查询.由于一个电影对应多种类型(tag),这就意味着,我需要进入这个电影介绍界面,看看他的tag是不是我需要的.太麻烦了.于是我想着做一个python爬虫. 首先需求分析. 流程如下:在网站的主界面获得每部电影的URL-->进入每部电影的介绍界面-->判断它的tag是否符合要求,如果符合返回这部电影的名字-->把满足条件的URL和电影名字保存为文件-->下一页

Python爬虫爬取一篇韩寒新浪博客

网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取一篇博客,第二节讲爬取一页博客.第三集讲爬取所有博客. 看了视频.也留下了代码. 爬虫第一步:查看网页源码: 第一篇博客的代码为蓝底的部分<a title="" target="_blank" href="http://blog.sina.com.cn/

Python爬虫开发系列之一》开发IDE安装

中国有句古话说:工欲善其事,必先利其器! 在我最开始学 Python 的时候,因为没有去探索好用的工具,吃了很多苦头.磕磕绊绊走过来之后才知道,好的工具给效率带来的提升不是从 1 到 1.1 倍速,而是从 1 到 10 倍速. 所以说编写和运行程序之前我们必须要先把开发环境配置好,只有配置好了环境并且有了更方便的开发工具我们才能更加高效地用程序实现相应的功能达到事半工倍的效果,然而很多情况下我们可能在最开始就卡在环境配置上,如果这个过程花费了太多时间,想必学习的兴趣就下降了大半,所以本章专门开发

Python爬虫开发的3大难题,别上了贼船才发现,水有多深

写爬虫,是一个非常考验综合实力的活儿.有时候,你轻而易举地就抓取到了想要的数据:有时候,你费尽心思却毫无所获. 好多Python爬虫的入门教程都是一行代码就把你骗上了"贼船",等上了贼船才发现,水好深-比如爬取一个网页可以是很简单的一行代码: r = requests.get('http://news.baidu.com') 非常的简单,但它的作用也仅仅是爬取一个网页,而一个有用的爬虫远远不止于爬取一个网页. 一个有用的爬虫,只需两个词来衡量: 数量:能否抓全所有该类数据 效率:抓完所

Python爬虫开发【第1篇】【urllib2】

1.urlopen # urllib2_urlopen.py # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.baidu.com") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html 执行写的python代码,将打印结果

Python爬虫开发【第1篇】【动态HTML、Selenium、PhantomJS】

JavaScript JavaScript 是网络上最常用也是支持者最多的客户端脚本语言.它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏. 我们可以在网页源代码的<scripy>标签里看到,比如: <script type="text/javascript" src="https://statics.huxiu.com/w/mini/static_2015/js/sea.js?v=201601150944&quo

Python爬虫开发【第1篇】【正则表达式】

1.正则表达式 它是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑. 2.re模块 2.1.re模块使用步骤: 使用 compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象 通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果,一个 Match 对象. 最后使用 Match 对象提供的属性和方法获得信息,根据需要

Python爬虫开发【第1篇】【Json与JsonPath】

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适用于进行数据交互的场景,比如网站前台与后台之间的数据交互. 官方文档:http://docs.python.org/library/json.html Json在线解析网站:http://www.json.cn/# JSON json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表