最近学习与练习 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
1
582033 2016-08-19 06:40:18 +08:00 via Android
愣是没看明白。。。
|
2
laoyur 2016-08-19 08:59:08 +08:00
期待楼主发 Scrapy 系列教程……
url 已经告诉你真相 http://www.jdlingyu.moe/cosplay/page/2/ 解完一页后,直接根据当前 url 构造下一个 request 不就完了嘛,当然,这样不是并发 真要并发的话,你直接根据 url 构造成百上千个 request 扔出去,再加上 delay 、限流控制不就欧了 |
3
xiaoyu9527 OP @582033 我现在不知道 scrapy 怎么采集相关分页的。
|
4
xiaoyu9527 OP @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 会自己逐个去抓 |
6
xiaoyu9527 OP |
7
laoyur 2016-08-19 09:32:38 +08:00
直接拿到『下一页』的 url
//a[@title='下一页']/@href |
8
xiaoyu9527 OP 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 的日志放在哪里么? |
9
samael 2016-08-19 09:55:54 +08:00
@xiaoyu9527 scrapy 的日志需要自己重定向到自己想要保存的文件里
|
10
xiaoyu9527 OP @samael 我去百度一下 谢谢。
|
11
xiaoyu9527 OP |
12
582033 2016-08-19 10:32:40 +08:00
|
13
xiaoyu9527 OP |
14
xiaoyu9527 OP 继续请教 现在是内页 分页 怎么破?
|
15
xiaoyu9527 OP [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 了。 |