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

一、审查元素

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

  

  接着屏幕下方就会出现对应的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)

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

最新文章

  1. 实用控件分享:自定义逼真相机光圈View
  2. JavaWeb三大组件——过滤器的运行机制理解
  3. [置顶]PADS PCB功能使用技巧系列之NO.005- 如何正确使用Verify Design?
  4. SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
  5. CSS3选择器(一)之基本选择器
  6. JAVA基础知识之JVM-——通过反射查看类信息
  7. POJ C++程序设计 编程题#4 字符串操作
  8. Scrapy源码学习(二)
  9. Android开源项目(转载)
  10. BZOJ 1021 循环的债务
  11. Rational Rose与UML教程
  12. 《那些事之Log4j》什么是log4j?【专题一】
  13. CMD获取当前目录的绝对路径
  14. bootstrap初级
  15. Jenkins简明入门(三) -- Blue Ocean,让一切变得简单
  16. MacOS10.14下Eclipse安装lombok
  17. Spring源码加载过程图解(一)
  18. JDK文件夹结构及文件解释
  19. MySQL5.7安装及遇到的问题
  20. Intent跳转系统的应用

热门文章

  1. VS - Paginated
  2. 通过map文件找程序崩溃的代码行
  3. leetcode解题报告(26):Add Binary
  4. 100: cf 878C set+并查集+链表
  5. python写一个随机点名软件
  6. 面对对大体量矢量数据ArcGIS的优化方法
  7. Xilinx ISE的时序约束
  8. typescript 错误记录
  9. 7、CentOS6 编译安装
  10. apache不能解析php之解决办法