zoukankan      html  css  js  c++  java
  • Python爬取网址中多个页面的信息

      通过上一篇博客了解到爬取数据的操作,但对于存在多个页面的网址来说,使用上一篇博客中的代码爬取下来的资料并不完整。接下来就是讲解该如何爬取之后的页面信息。

    一、审查元素

      鼠标移至页码处右键,选择检查元素

      

      接着屏幕下方就会出现对应的html语句

      

     二、分析html语句与项目要求

      本次项目是爬取所有信息,根据第一步中的html语句,我们有两种爬取后续页面信息的方法:

      方法一:循环访问本页面中的“下一页”链接直至该标签为空

      

       即

    def next_page(url):
        soup=get_requests(url)
        draw_base_list(soup)
        pcxt=soup.find('div',{'class':'babynames-term-articles'}).find('nav')
        pcxt1=pcxt.find('div',{'class':'nav-links'}).find('a',{'class':'next page-numbers'})
        if pcxt1!=None:
            link=pcxt1.get('href')
            next_page(link)
        else:
            print("爬取完成")

      方法二:获取总页数,通过更改url来爬取后续信息

      通过html语句可以看出不同页数的url只有最后的数字不一样,而最后的数字就代表着这个url中的信息是第几页的信息。

       页面中的html语句给出了总页码,我们只需要定位至该标签并获得总页数即可。

      即

    def get_page_size(soup):
        pcxt=soup.find('div',{'class':'babynames-term-articles'}).find('nav')
        pcxt1=pcxt.find('div',{'class':'nav-links'}).findAll('a')
        for i in pcxt1[:-1]:
            link=i.get('href')
            s=str(i)
        page=re.sub('<a class="page-numbers" href="','',s)
        page1=re.sub(link,'',page)
        page2=re.sub('">','',page1)
        page3=re.sub('</a>','',page2)
        pagesize=int(page3)
        print(pagesize)
        return pagesize
        pass

      获得总页数后这个模块还没有结束,我们还需要更改url来访问网址,也就是主函数的编写:

    if __name__ == '__main__':
            url="http://www.sheknows.com/baby-names/browse/a/"
            soup=get_requests(url)
            page=get_page_size(soup)
            for i in range(1,page+1):
                url1=url+"page/"+str(i)+"/"
                soup1=get_requests(url1)
                draw_base_list(soup1)

      通过以上的两种方法就可以将多个页面中的信息都爬取下来了,赶紧动手试试吧。

  • 相关阅读:
    python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义
    mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)
    提交 git 项目 到 github 在 centos 7
    常用正则表达式大全 (转)
    如何让vim编辑器永久显示行号
    Ubuntu下忘记MySQL密码重设方法
    Base64复习
    好用的正则表达式工具
    64位centos下安装python的PIL模块
    springboot中使用servlet通过配置类
  • 原文地址:https://www.cnblogs.com/zhangmingfeng/p/12041702.html
Copyright © 2011-2022 走看看