Scrapy 的相关分页怎么写?

2016-08-19 00:34:21 +08:00
 xiaoyu9527

最近学习与练习 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
3365 次点击
所在节点    Python
15 条回复
582033
2016-08-19 06:40:18 +08:00
愣是没看明白。。。
laoyur
2016-08-19 08:59:08 +08:00
期待楼主发 Scrapy 系列教程……

url 已经告诉你真相 http://www.jdlingyu.moe/cosplay/page/2/
解完一页后,直接根据当前 url 构造下一个 request 不就完了嘛,当然,这样不是并发
真要并发的话,你直接根据 url 构造成百上千个 request 扔出去,再加上 delay 、限流控制不就欧了
xiaoyu9527
2016-08-19 09:05:03 +08:00
@582033 我现在不知道 scrapy 怎么采集相关分页的。
xiaoyu9527
2016-08-19 09:06:57 +08:00
@laoyur 有没有相关案例教程。 你光这样说我也不懂呀。 懂我精通了我会写一些发出来的
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
2016-08-19 09:25:34 +08:00
@laoyur 构造 PAGES 页的 URL 。 这种比较简单么。 我想学习爬取 PAGES 页然后剔除重复 这样对待不规则的 URLS 也可以用。

不是要针对这个给。
laoyur
2016-08-19 09:32:38 +08:00
直接拿到『下一页』的 url
//a[@title='下一页']/@href
xiaoyu9527
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
2016-08-19 09:55:54 +08:00
@xiaoyu9527 scrapy 的日志需要自己重定向到自己想要保存的文件里
xiaoyu9527
2016-08-19 10:16:22 +08:00
@samael 我去百度一下 谢谢。
xiaoyu9527
2016-08-19 10:17:20 +08:00
582033
2016-08-19 10:32:40 +08:00
@xiaoyu9527
https://github.com/582033/scrapy_test
之前写的一个抓 itjuzi 数据的,跟你的需求应该是一样,你可以参考参考
xiaoyu9527
2016-08-19 11:19:35 +08:00
@582033

感谢。 我去学习一下分页抓取 现在是直接生成的。
xiaoyu9527
2016-08-19 19:15:40 +08:00
继续请教 现在是内页 分页 怎么破?
xiaoyu9527
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 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300302

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX