美文网首页
爬豆瓣豆列

爬豆瓣豆列

作者: ddm2014 | 来源:发表于2018-09-21 22:55 被阅读0次

目的:把精彩豆列频道里的每个豆列里的内容抓取出来。
流程是抓取目录页精彩豆列频道豆列的地址-对每个豆列所有页数都抓取具体内容、网址、时间。
这就很标准crawlspider干的活了,把目录页的地址写成start_request依次爬取,然后对每个豆列都用rules控制。

图片.png
图片.png
目录页的分析:
豆瓣豆列挺有意思,没做分页,直接js获取数据,json数据又长得像html的样子,没别的参数非常好爬。
json长这样:

request
有了这两项就可以想提取多少就提取多少豆列地址了,我做了前200个。
import scrapy
from scrapy.spiders import CrawlSpider,Rule
from scrapy.linkextractors import LinkExtractor
from pyquery import PyQuery as pq
import requests
from douban.items import DoubanItem
import logging

class DbSpider(CrawlSpider):
    name = 'db'
    # allowed_domains = ['douban.com/doulist/']
    
    rules = (Rule(
        LinkExtractor(allow ='\?start'), callback = 'parse_detail', follow = True),)

    # restrict_xpaths = ('//*[@id="content"]/div/div[1]/div[25]/a')
    def start_requests(self):
        url = 'https://www.douban.com/j/doulist/doulists?start=0&limit=200'
        res = requests.get(url)
        cont = pq(res.json()['html'])
        for item in cont('.doulist-item').items():
            logging.info(item('.title a').attr('href'))
            yield scrapy.Request(item('.title a').attr('href'))

    def parse_detail(self, response):
        logging.info(response.url)

        res = pq(response.body)
        for item in res('.doulist-item .mod').items():
            dbitem = DoubanItem()
            dbitem['title'] = item('.title a').text()
            dbitem['index_url'] = response.url
            logging.info(item('.title a').text())
            dbitem['url'] = item('.title a').attr('href')
            dbitem['times'] = item('.time span').text()
            yield dbitem

有几个坑:

  1. restrict_xpaths = ('//*[@id="content"]/div/div[1]/div[25]/a')可以提取url,但是遇到很多页中间有省略项比如1 2...9 10,他就只能提取1,2,9,10,想来也是3-8都没有显示出来怎么提取呢,这时候用allow网址提取就好了,网址https://www.douban.com/doulist/37669191/?start=25&sort=time&playable=0&sub_type=,相似性是‘start=’前面的问号需转译。
    2.rules需iterable,这次rules只有一项所以要在后面加逗号。
    3.restrict_xpaths用浏览器提取

相关文章

  • 爬豆瓣豆列

    目的:把精彩豆列频道里的每个豆列里的内容抓取出来。流程是抓取目录页精彩豆列频道豆列的地址-对每个豆列所有页数都抓取...

  • 我的书单

    我的书全部记录在豆瓣中,按豆列进行可分类,可关注我的首页,找豆列。 我的豆瓣:https://www.douban...

  • 两性之外

    两性之外豆瓣豆列[https://www.douban.com/doulist/134094171/]

  • 产品碎碎念:豆瓣豆列与社交日历

    登录豆瓣,看到了右上角的豆油(1),好兴奋,又有人豆我了耶!兴高采烈的点开,却发现是豆瓣在推送其更新的豆瓣豆列功能...

  • 用“思维点藏”的“文集”功能建立你的本地“豆列”

    豆瓣近年里最大跳跃的这一刻,我们把豆列升级成了手机上豆瓣 App 的第一重点,和书影音查询并列。所有豆列统一成任意...

  • 人生很难,我们不能只靠别人的攻略

    豆瓣上有一个极为好用的工具,叫豆列。你可以根据不同的需求创造豆列,比如“XXX不得不看的书”“学习提升”“26后人...

  • 看什么电影——豆瓣「电影」豆列

    这两天简书流行如何寻找电影资源,如何变成资源帝。可是找电影资源的前提是,必须知道自己要看什么电影。其实很多时候我都...

  • 普通又精彩—《暗战》观后感(1/100)

    我在豆瓣中关注了一个“豆列”——高智商互斗,顾名思义,就是有关高智商的人斗智斗勇的过程。这个豆列中一共有58个内容...

  • 豆瓣APP分析报告

    一、背景 正在试用知乎日报3.0β版应用,让我想到豆瓣豆列的思维。当我深入去分析豆瓣APP的发展历程时,好像已经形...

  • 2017年挑战200本【书单篇】

    1、活动背景介绍 关于阅读,这个技巧从来没有人给你说过 2、我的书单管理系统(豆瓣) 豆瓣豆列 3、下一步: - ...

网友评论

      本文标题:爬豆瓣豆列

      本文链接:https://www.haomeiwen.com/subject/llewnftx.html