首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

关于用 scrapy 翻页问题

  •  
  •   Ewig · 35 天前 · 775 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 不知道有多少页,因为我要点很多按钮 城市 融资,然后点入每个详情页 抓数据,现在不知道多少页,只能通过点击下一页找,如何写?
    14 回复  |  直到 2019-01-18 16:03:04 +08:00
        1
    layorlayor   35 天前
    if len(next_page) != 0: yield xxxx ???
        2
    layorlayor   35 天前
    用 class="next"貌似要好些,因为没有下一页就没这个标签了
        3
    Ewig   35 天前
    @layorlayor https://www.zhipin.com/gongsi/_zzz_c101200100_iy100101_t801_s302/

    这个网站我先进入每个详情页,然后再翻页 进入详情页抓数据
        4
    Ewig   35 天前
    这个不好处理
        5
    xpresslink   35 天前
    try: 获取下一页;yeild 下一页; except: pass
        6
    largecat   34 天前 via Android
    递归下一页。
    获取的数据返回在顶层打包丢给 pipeline
        7
    Ewig   34 天前
    @xpresslink 为啥 try
        8
    kr380709959   34 天前
    我爬过拉钩的,类似也是分页的,我记得我是 page += 1,
    if item:
    break
    else:
    items.append(item)

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

    直接使用捕获异常,或是先检测再使用是两种哲学。
    python 和一些动态语言倾向使用第一种哲学
        11
    houzhimeng   34 天前
    方法挺多,1.先爬列表页所有,判断有没有内容了,if not room_list :return,
    2.然后解析详情页。
    ls 那种方法去重也行,或者 CrawlSpider
        12
    Ewig   33 天前
    @houzhimeng 这个页面你多少页都有内容啊,因为都是最后一页内容
        13
    Ewig   32 天前
    @xpresslink 我那个写的有问题吗?
        14
    Ewig   32 天前
    @quere 和去重啥关系
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3871 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 07:43 · PVG 15:43 · LAX 23:43 · JFK 02:43
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1