爬取干货集中营数据(2)
得到更多妹纸图 ಠ౪ಠ
-
还记得上一次抓住的妹子吗。爬取干货集中营数据(1)——抓住妹子
延用上次的工程代码,我们继续抓妹子。 -
定义Item(ganl/items.py):
class GankMeizi(scrapy.Item): title = scrapy.Field() image = scrapy.Field() refs = scrapy.Field()
- title : 每页标题
- image : 每页妹子
- refs : 每页中的超链接,链向下一篇 或者 上一篇
-
继续修改gankMeiZi.py
# -*- coding: utf-8 -*-
__author__ = 'dongsj'
import scrapy
from scrapy.spider import Spider
from scrapy.selector import Selector
from gank.items import GankMeizi
class GankMeiZiSpider(Spider):
name = 'gankMeiZi'
allowed_domains = ["gank.io"]
start_urls = [
"http://gank.io"
]
def parse(self, response):
"""
用来爬取http://gank.io 妹子图片
"""
base_url = 'http://gank.io'
sel = Selector(response)
# 页面标题
title = sel.xpath("//div[@class='typo']/div/h1/text()").extract()
# 图片
image = sel.xpath("//div[@class='outlink']/h1/img/@src").extract()
# 前一页面地址
refs = sel.xpath("//div[@class='typo']/div[@class='container content']/div[@class='row'][1]/div[@class='six columns']/p/a/@href").extract()
# Item 对象
meizi = GankMeizi()
meizi['title'] = title[0]
meizi['image'] = image[0]
meizi['refs'] = refs
yield meizi
if 0 < len(refs):
url = base_url + refs[0]
yield scrapy.Request(url, callback=self.parse)
- 这里还是使用 xpath 解析了页面上的超链接(指向上一篇 或者 下一篇文章)
- 得到超链接后,根据网站特点拼接成新的链接,继续爬取一次妹子
当然这里还是有很多问题:
- 会出现重复的妹子,我们需要加入判断的机制,使得妹子不会被重复的爬取
- 爬取的内容只是打印在控制台,我们需要另外的存储方式
- ... ...
网友评论