关于用 scrapy 翻页问题

2019-01-16 10:06:16 +08:00
 Ewig
def get_page_content(self,response):
next_page = response.xpath('//div[@class="page"]/a[contains(@ka,"page-next")]/@href').extract()
print(response.url)
linkList=response.xpath('//div[@class="sub-li"]/a[contains(@class,"company-info")]/@href').extract()
linkList=[response.urljoin(link) for link in linkList]
if linkList :
for link in linkList:
yield scrapy.Request(url=link,callback=self.final_parsre,dont_filter=True)

next_page = response.xpath('//div[@class="page"]/a[contains(@ka,"page-next")]/@href').extract()
print(next_page)
if next_page is not None:
next_page=response.urljoin(next_page[0])
yield scrapy.Request(url=next_page,callback=self.get_page_content,dont_filter=True)

https://www.zhipin.com/gongsi/_zzz_c101200100_iy100101_t801_s302/?page=1&ka=page-1

这个网站翻页是通过点击 next page 不知道有多少页,因为我要点很多按钮 城市 融资,然后点入每个详情页 抓数据,现在不知道多少页,只能通过点击下一页找,如何写?
2692 次点击
所在节点    Python
14 条回复
layorlayor
2019-01-16 10:18:13 +08:00
if len(next_page) != 0: yield xxxx ???
layorlayor
2019-01-16 10:21:33 +08:00
用 class="next"貌似要好些,因为没有下一页就没这个标签了
Ewig
2019-01-16 10:58:32 +08:00
@layorlayor https://www.zhipin.com/gongsi/_zzz_c101200100_iy100101_t801_s302/

这个网站我先进入每个详情页,然后再翻页 进入详情页抓数据
Ewig
2019-01-16 10:58:41 +08:00
这个不好处理
xpresslink
2019-01-16 13:21:41 +08:00
try: 获取下一页;yeild 下一页; except: pass
largecat
2019-01-16 16:38:54 +08:00
递归下一页。
获取的数据返回在顶层打包丢给 pipeline
Ewig
2019-01-16 16:49:06 +08:00
@xpresslink 为啥 try
kr380709959
2019-01-16 16:54:21 +08:00
我爬过拉钩的,类似也是分页的,我记得我是 page += 1,
if item:
break
else:
items.append(item)

//item 是职位信息
quere
2019-01-16 17:07:48 +08:00
scripy-redis 这个框架里面有一个自动去重的,可以用这个框架抓取
xpresslink
2019-01-16 17:15:22 +08:00
@Ewig 因为下页的 url 在最后一页肯定是获取不到或得到 None 的。yield 下一页的 Request 对象就会报错。scrapy 本身也有异常处理机制并不会影响其它 Request 对象执行,只是输出错误信息到日志里面。

直接使用捕获异常,或是先检测再使用是两种哲学。
python 和一些动态语言倾向使用第一种哲学
houzhimeng
2019-01-16 17:23:11 +08:00
方法挺多,1.先爬列表页所有,判断有没有内容了,if not room_list :return,
2.然后解析详情页。
ls 那种方法去重也行,或者 CrawlSpider
Ewig
2019-01-18 15:03:08 +08:00
@houzhimeng 这个页面你多少页都有内容啊,因为都是最后一页内容
Ewig
2019-01-18 15:54:37 +08:00
@xpresslink 我那个写的有问题吗?
Ewig
2019-01-18 16:03:04 +08:00
@quere 和去重啥关系

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

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

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

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

© 2021 V2EX