python学习

Python学习八十三天:页面元素解析

2019-05-13  本文已影响12人  暖A暖

1.解析字段信息

import scrapy
from urllib import parse
from scrapy.http import Request
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['https://dribbble.com/stories']
    def parse(self, response):
        # 获取a标签的url值
        # urls = response.css('h2 a::attr(href)').extract()
        a_nodes = response.css('header div.teaser a')
        for a_node in a_nodes:
            # print(a_node)
            a_url = a_node.css('::attr(href)').extract()[0]
            a_image_url = a_node.css('img::attr(src)').extract()[0]
            yield Request(url=parse.urljoin(response.url, a_url), callback=self.parse_analyse, meta={'a_image_url': a_image_url})
    def parse_analyse(self, response):
        a_image_url = response.meta.get('a_image_url')
        title = response.css('.post header h1::text').extract()[0]
        date = response.css('span.date::text').extract_first()
        print('图片的url是:{}'.format(a_image_url))
        print('标题是: {}'.format(title))
        print('时间是:{}'.format(date.strip()))

2.构建数据模型

import scrapy
class XkdDribbbleSpiderItem(scrapy.Item):
    title = scrapy.Field()
    a_image_url = scrapy.Field()
    date = scrapy.Field()
import scrapy
from urllib import parse
from scrapy.http import Request
from ..items import XkdDribbbleSpiderItem
from datetime import datetime
class DribbbleSpider(scrapy.Spider):
    name = 'dribbble'
    allowed_domains = ['dribbble.com']
    start_urls = ['https://dribbble.com/stories']
    def parse(self, response):
        # 获取a标签的url值
        # urls = response.css('h2 a::attr(href)').extract()
        a_nodes = response.css('header div.teaser a')
        for a_node in a_nodes:
            # print(a_node)
            a_url = a_node.css('::attr(href)').extract()[0]
            a_image_url = a_node.css('img::attr(src)').extract()[0]
            yield Request(url=parse.urljoin(response.url, a_url), callback=self.parse_analyse, meta={'a_image_url': a_image_url})
    def parse_analyse(self, response):
        a_image_url = response.meta.get('a_image_url')
        title = response.css('.post header h1::text').extract()[0]
        date = response.css('span.date::text').extract_first()
        date = date.strip()
        date = datetime.strptime(date, '%b %d, %Y').date()
        # 构建模型
        dri_item = XkdDribbbleSpiderItem()
        dri_item['a_image_url'] = a_image_url
        dri_item['title'] = title
        dri_item['date'] = date
        yield dri_item

参考:https://www.9xkd.com/user/plan-view.html?id=4097329051

上一篇 下一篇

猜你喜欢

热点阅读