scrapy简单爬虫

在cmd里面输入


在ide里面修改books.py文件

-----------------------------------------------------------------------------------------------------------

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

import scrapy

class BooksSpider(scrapy.Spider):
#爬虫唯一标识
name = 'books'
#入口点
start_urls = ['http://books.toscrape.com/']
#解析页面,1.提取页面中的数据,2、提取页面中的链接  
#页面解析函数通常被实现成一个生成器函数,
#每一项从页面中提取的数据和每个链接页面的下载请求都由yield语句提交给scrapy引擎
def parse(self, response):
for book in response.css('article.product_pod'):
name = book.xpath('./h3/a/@title').extract_first()
price = book.css('p.price_color::text').extract_first()
yield{
'name':name,
'price':price,


  }
  #提取链接 
next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
if next_url:
#如果找到下一页的URL,得到绝对路径,构造新的对象
#urljoin用于构造绝对url
next_url = response.urljoin(next_url)

yield scrapy.Request(next_url,callback  = self.parse)

--------------------------------------------------------------------------------------------------------------------------------

在cmd里面输入

小结页面解析函数是通过callback参数指定的回调函数,返回一个迭代对象,每次迭代返回一项数据或者一个request对象

在实际应用中,我们几乎只调用request的构造器创建对象,但也可以根据需求访问request对象的属性,常用的如下:

url    method   headers   body    meta


HtmlReaponse对象有很对属性,但是常用的有:

xpath(query)

css(query)

urljoin(url)

实现一个spider只需要完成4个步骤

1. 继承scrapy.Spider

2. 为Spider取名

3. 设定起始爬取点

4.实现页面解析函数


实现start_Requests方法,代替start_urls类的属性,覆盖基类Spider的start_requests方法,直接构造并提交起始爬取点的request对象

def start_requests(self):


    yield scrapy.Request('http://books.toscrape.com/',
    callback = self.parse_book,
    headers = {'User-Agent':'Mozilla/5.0'}
    dont_filter=True)
def parse_book(response):



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值