上周上学了BeautifulSoup的基础知识并用它做到了2个网络爬虫(
使用Beautiful Soup编写1个爬虫
连串随笔汇总

),

BeautifulSoup是三个非凡流行的Python互联网抓取库,它提供了二个依据HTML结构的Python对象。

虽说简易易懂,又能充裕好的拍卖HTML数据,但是相比Scrapy而言,BeautifulSoup有一个最大的瑕疵:慢。

Scrapy 是2个开源的 Python
数据抓取框架,速度快,强大,而且使用简单。

来看三个官网主页上的简易并完好的爬虫:

XML 1

尽管唯有10行左右的代码,然而它真的是三个总体的爬虫服务:

  1. 当执行scrapy runspider xxx.py命令的时候,
    Scrapy在档次里摸索Spider(蜘蛛️)并通过爬虫引擎来执行它。
  2. 首先从概念在start_urls里的UCRUISERL开端发起呼吁,然后通过parse()方法处理响应。response参数正是回来的响应对象。
  3. 在parse()方法中,通过1个CSS采用器获取想要抓取的数目。

Scrapy全数的呼吁都是异步的,也正是说Scrapy不须求等2个呼吁达成才能处理下一条请求,而是同时提倡另一条请求。

与此同时,异步请求的另二个好处是当某些请求退步了,别的的呼吁不会受到震慑。

安装(Mac)

pip install scrapy

其余操作系统请参见完整安装引导:http://doc.scrapy.org/en/latest/intro/install.html

Scrapy中多少个须要了然的概念

Spiders

Spider类想要表明的是:如何抓取四个规定了的网站的数额。比如在start_urls里定义的去哪个链接抓取,parse()方法中定义的要抓取什么样的数目。

当三个Spider开端执行的时候,它首先从start_urls()中的第一个链接开头提倡呼吁,然后在callback里处理回来的数量。

Items

Item类提供格式化的数码,可以领略为数量Model类。

Selectors

Scrapy的Selector类基于lxml库,提供HTML或XML转换职能。以response对象作为参数生成的Selector实例即可通过实例对象的xpath()方法赢得节点的数码。

编写3个Web爬虫

接下去将上3个Beautiful Soup版的抓取书籍新闻的例证(接纳Beautiful Soup编写三个爬虫
系列小说汇总
)改写成Scrapy版本。

新建项目

scrapy startproject book_project

那行命令会创立1个名为book_project的项目。

编写Item类

即实体类,代码如下:

import scrapy

class BookItem(scrapy.Item):
    title = scrapy.Field()
    isbn = scrapy.Field()
    price = scrapy.Field()

 

编写Spider类

设置这一个Spider的称号,允许爬取的域名和从哪个链接起先:

import scrapy
from book_project.items import BookItem

class BookInfoSpider(scrapy.Spider):
    name = "bookinfo"
    allowed_domains = ["allitebooks.com", "amazon.com"]
    start_urls = [
        "http://www.allitebooks.com/security/",
    ]

 

遍历分页数据的格局

def parse(self, response):
    num_pages = int(response.xpath('//a[contains(@title, "Last Page →")]/text()').extract_first())
    base_url = "http://www.allitebooks.com/security/page/{0}/"
    for page in range(1, num_pages):
        yield scrapy.Request(base_url.format(page), dont_filter=True, callback=self.parse_page)

‘//a’的意趣全体的a标签;
‘//a[contains(@title, “Last Page →”)’
的情趣是在全部的a标签中,title属性包蕴”Last Page →”的a标签;
extract() 方法分析并回到符合条件的节点数据。

从allitebooks.com获取书籍消息方式

def parse_page(self, response):
        for sel in response.xpath('//div/article'):
            book_detail_url = sel.xpath('div/header/h2/a/@href').extract_first()
            yield scrapy.Request(book_detail_url, callback=self.parse_book_info)

def parse_book_info(self, response):
    title = response.css('.single-title').xpath('text()').extract_first()
    isbn = response.xpath('//dd[2]/text()').extract_first()
    item = BookItem()
    item['title'] = title
    item['isbn'] = isbn
    amazon_search_url = 'https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=' + isbn
    yield scrapy.Request(amazon_search_url, callback=self.parse_price, meta={ 'item': item })

 

从amazon.com获取书籍价格措施            

def parse_price(self, response):
    item = response.meta['item']
    item['price'] = response.xpath('//span/text()').re(r'\$[0-9]+\.[0-9]{2}?')[0]
    yield item

起先服务开端抓取

scrapy crawl bookinfo -o books.csv

-o books.csv
参数的趣味是将抓取的Item集合输出到csv文件。

除去CSV格式,Scrapy还协助JSON,XML的格式输入。具体请参见:http://doc.scrapy.org/en/latest/topics/feed-exports.html#topics-feed-exports

结果:

XML 2

 

 

完全代码请移步GitHub: https://github.com/backslash112/book\_scraper\_scrapy

咱俩处于大数据时期,对数码处理感兴趣的情人欢迎查看另一个多如牛毛小说: 选取Python举行数量解析
基础种类小说汇总

大数据,大数量解析、BeautifulSoup,Beautiful Soup入门,Scrapy,
Scrapy爬虫,数据挖掘,数据解析,数据处理,pandas,互联网爬虫,web
scraper,python excel,python写入excel数据,python处理csv文件 Scrapy
csv, python操作Excel,excel读写 Scrapy框架
Scrapy框架入门大数量,大数量解析、BeautifulSoup,Beautiful
Soup入门,Scrapy,
Scrapy爬虫,数据挖掘,数据解析,数据处理,pandas,互连网爬虫,web
scraper,python excel,python写入excel数据,python处理csv文件 Scrapy
csv, python操作Excel,excel读写 Scrapy框架 Scrapy框架入门
大数目,大数目解析、BeautifulSoup,Beautiful Soup入门,Scrapy,
Scrapy爬虫,数据挖掘,数据解析,数据处理,pandas,网络爬虫,web
scraper,python excel,python写入excel数据,python处理csv文件 Scrapy
csv, python操作Excel,excel读写 Scrapy框架 Scrapy框架入门
大数额,大数额解析、BeautifulSoup,Beautiful Soup入门,Scrapy,
Scrapy爬虫,数据挖掘,数据解析,数据处理,pandas,互连网爬虫,web
scraper,python excel,python写入excel数据,python处理csv文件 Scrapy
csv, python操作Excel,excel读写 Scrapy框架 Scrapy框架入门
大数据,大数据解析、BeautifulSoup,Beautiful Soup入门,Scrapy,
Scrapy爬虫,数据挖掘,数据解析,数据处理,pandas,网络爬虫,web
scraper,python excel,python写入excel数据,python处理csv文件 Scrapy
csv, python操作Excel,excel读写 Scrapy框架 Scrapy框架入门

相关文章

网站地图xml地图