V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaoyu9527
V2EX  ›  Python

Scrapy 的相关分页怎么写?

  •  
  •   xiaoyu9527 · 2016-08-19 00:34:21 +08:00 · 3366 次点击
    这是一个创建于 3019 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近学习与练习 scrapy 终于会基本的改规则了。(当然只限于下载图片 数据处理那部分还没学)

    http://www.jdlingyu.moe/cosplay/page/2/

    目标站

    内容页已经会采集了。

    但是他的链接分页是 相关分页 也就是第一页的时候只显示 23 最后一页。

    如何才能写的规则 我改的妹子图的分页规则是 直接抓取(因为妹子图是完整分页)

        pages = sel.xpath('//*[@id="pagenavi"]/a/@href').extract()
        print('pages: %s' % pages)
        if len(pages) > 2:
            page_link = pages[-2]
            request = scrapy.Request('http://www.jdlingyu.moe/cosplay/page/%s/' % page_link, callback=self.parse)
            yield request
            
            请问一下应该怎么写?
            
            感谢 GOD
    
    15 条回复    2016-08-19 20:00:21 +08:00
    582033
        1
    582033  
       2016-08-19 06:40:18 +08:00 via Android
    愣是没看明白。。。
    laoyur
        2
    laoyur  
       2016-08-19 08:59:08 +08:00
    期待楼主发 Scrapy 系列教程……

    url 已经告诉你真相 http://www.jdlingyu.moe/cosplay/page/2/
    解完一页后,直接根据当前 url 构造下一个 request 不就完了嘛,当然,这样不是并发
    真要并发的话,你直接根据 url 构造成百上千个 request 扔出去,再加上 delay 、限流控制不就欧了
    xiaoyu9527
        3
    xiaoyu9527  
    OP
       2016-08-19 09:05:03 +08:00
    @582033 我现在不知道 scrapy 怎么采集相关分页的。
    xiaoyu9527
        4
    xiaoyu9527  
    OP
       2016-08-19 09:06:57 +08:00
    @laoyur 有没有相关案例教程。 你光这样说我也不懂呀。 懂我精通了我会写一些发出来的
    laoyur
        5
    laoyur  
       2016-08-19 09:14:36 +08:00
    @xiaoyu9527 说清楚思路后需要你自己去实现,总不能什么都别人帮你做好吧
    再说具体一点,你现在的情况比较简单, url 中不是有 page/2/这种嘛,说明你想爬哪一页,就直接构造对应的 url 就行了,那么最简单的实现,比如你要爬前 1000 页,就为你的 spider.start_urls 插入 一千个 url ,从 page/1/一直到 page/1000/不就完了嘛,你自己在 setting 里面设置好限流频次之类的, Scrapy 会自己逐个去抓
    xiaoyu9527
        6
    xiaoyu9527  
    OP
       2016-08-19 09:25:34 +08:00
    @laoyur 构造 PAGES 页的 URL 。 这种比较简单么。 我想学习爬取 PAGES 页然后剔除重复 这样对待不规则的 URLS 也可以用。

    不是要针对这个给。
    laoyur
        7
    laoyur  
       2016-08-19 09:32:38 +08:00
    直接拿到『下一页』的 url
    //a[@title='下一页']/@href
    xiaoyu9527
        8
    xiaoyu9527  
    OP
       2016-08-19 09:43:03 +08:00
    class MeizituSpider(scrapy.Spider):
    name = "meizitu"
    allowed_domains = ["jdlingyu.moe"]
    start_urls = []
    #获取全部翻页链接
    for pn in range(1,29):
    url = 'http://www.jdlingyu.moe/cosplay/page/%s/' % pn
    start_urls.append(url)

    我把构造 pages 页写成这样了。 但是不知道为啥他并不能抓取到所有的 pages 页。 是因为并发太高的原因导致被防攻击了么?

    另外谁知道 scrapy 的日志放在哪里么?
    samael
        9
    samael  
       2016-08-19 09:55:54 +08:00
    @xiaoyu9527 scrapy 的日志需要自己重定向到自己想要保存的文件里
    xiaoyu9527
        10
    xiaoyu9527  
    OP
       2016-08-19 10:16:22 +08:00
    @samael 我去百度一下 谢谢。
    xiaoyu9527
        11
    xiaoyu9527  
    OP
       2016-08-19 10:17:20 +08:00
    582033
        12
    582033  
       2016-08-19 10:32:40 +08:00
    @xiaoyu9527
    https://github.com/582033/scrapy_test
    之前写的一个抓 itjuzi 数据的,跟你的需求应该是一样,你可以参考参考
    xiaoyu9527
        13
    xiaoyu9527  
    OP
       2016-08-19 11:19:35 +08:00
    @582033

    感谢。 我去学习一下分页抓取 现在是直接生成的。
    xiaoyu9527
        14
    xiaoyu9527  
    OP
       2016-08-19 19:15:40 +08:00
    继续请教 现在是内页 分页 怎么破?
    xiaoyu9527
        15
    xiaoyu9527  
    OP
       2016-08-19 20:00:21 +08:00
    [root@localhost fun_crawler]# wget http://www.xiumm.cc/albums/Goddess-2.html
    --2016-08-19 19:41:03-- http://www.xiumm.cc/albums/Goddess-2.html
    正在解析主机 www.xiumm.cc... 127.0.0.1
    正在连接 www.xiumm.cc|127.0.0.1|:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 404 Not Found
    2016-08-19 19:41:18 错误 404 : Not Found 。
    这是什么鬼呀。。 怎么这个域名解析成 127.0.0.1 了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:48 · PVG 06:48 · LAX 14:48 · JFK 17:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.