1. '''
  2. Created on 2017年4月5日
  3.  
  4. @author: Admin
  5. '''
  6.  
  7. import requests
  8. from bs4 import BeautifulSoup as bsp
  9.  
  10. # 网站链接
  11. site = 'http://www.runoob.com'
  12. lineNo = 1
  13.  
  14. class Movie:
  15.  
  16. def __init__(self, name, url):
  17. self.name = name
  18. self.url = url
  19.  
  20. def __str__(self):
  21. return '%s,\t%s分,\t%s' % (self.name, self.url)
  22.  
  23. __repr__ = __str__
  24.  
  25. def getSoup(url):
  26. r = requests.get(url)
  27. # r.encoding = 'gb18030'
  28. return bsp(r.text, "html.parser")
  29.  
  30. # 解析指定url,获取其中指定内容
  31. def filterMovie(url):
  32. resultList = []
       # url处理,注意页面的编码集
  33. soup = getSoup(url)
    # 查找所有target=_top的a标签
  34. atags = soup.find_all('a', target='_top')
  35. for atag in atags:
         # 取到指定a标签的title属性
  36. titleA = atag['title']
  37. if atag is not None:
  38. try:
              # 根据取到的href属性,拼接上页面域名 获得完整的跳转url
  39. url = site + atag['href']
  40. print('url:', url)
  41. print('title:', titleA)
              # 根据主方法里面 _init_ 中定义的内容,将获取到的字段进行组合,然后放到集合中
  42. movie = Movie(titleA, url)
  43. resultList.append(movie)
  44. except:
  45. print('error !!')
  46. return resultList
  47.  
  48. # 根据传入的结果结合 按照指定格式保存到 文本文件中
  49. def saveInfo(atagList):
  50. # 注意指定编码,否则输入到txt文件的时候会乱码
  51. fileObj = open('vueJS.txt', 'a',encoding='utf8')
  52. for atag in atagList:
  53. atagName = str(atag.name)
  54. print('url info:', atagName)
  55. global lineNo
  56. fileObj.write('(' + str(lineNo) + ') ' + atagName )
  57. fileObj.write('\t')
  58. fileObj.write(atag.url)
  59. fileObj.write(
  60. '————————————————————————————————————————————————————————————————————————————————————————————————')
  61. fileObj.write('\n')
  62. lineNo += 1
  63. fileObj.close()
  64.  
  65. # 获取到根据url整理出的一个结果集合,然后将结果集合保存的物理文件中
  66. def getPageResource(url):
      
  67. resultList = filterMovie(url)
  68. if len(resultList) > 0:
  69. saveInfo(resultList)

  70. # 方法入口,定义一个页面url,然后去解析
  71. if __name__ == '__main__':
  72. url = 'http://www.runoob.com/vue2/vue-tutorial.html'
  73. getPageResource(url)

python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出的更多相关文章

  1. Java 爬虫(获取指定页面中所有的邮箱地址)

    import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.In ...

  2. objectARX 获取指定图层上所有实体ID

    2015-12-17 //获取指定图层上所有实体ID AcDbObjectIdArray GetAllEntityId(const TCHAR* layername) { AcDbObjectIdAr ...

  3. python模块之HTMLParser抓页面上的所有URL链接

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParse ...

  4. php获取指定文件夹中文件名称

    /** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...

  5. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  6. python爬虫3——获取审查元素(板野友美吧图片下载)

    测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...

  7. Python爬虫 爬取Web页面图片

    从网页页面上批量下载jpg格式图片,并按照数字递增命名保存到指定的文件夹 Web地址:http://news.weather.com.cn/2017/12/2812347.shtml 打开网页,点击F ...

  8. python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

    1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...

  9. js禁用页面上右键菜单、选中和复制

    有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...

随机推荐

  1. Spring boot 2.1.x 造成的问题

    1. mysql-conector-java 版本默认使用了 8.0.1.5 导致:项目启动时的警告:Loading class `com.mysql.jdbc.Driver'. This is de ...

  2. echarts常用方法(一)

    目前,项目中涉及到图表的,使用echarts的频率较多,因为UI设计一般不会考虑到是否能实现的问题,他们专注的只是显示的效果.所以作为前端开发,要对echarts进行不同程度的改造,组合,甚至重写等. ...

  3. prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!

    序列模式挖掘是从序列数据库中发现频繁子序列作为模式. 子序列与频繁序列 了解了序列数据的概念,我们再来看看上面是子序列.子序列和我们数学上的子集的概念很类似,也就是说,如果某个序列A所有的项集在序列B ...

  4. os.path官方文档(附翻译)

    This module implements some useful functions on pathnames. To read or write files see open(), and fo ...

  5. Vuex学习笔记(-)安装vuex

    什么是Vuex? vuex是一个专门为vue.js应用程序开发的状态管理模式.即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. 安装vuex(前提是已经安装好vue-cli脚手 ...

  6. 工作笔记6-java相关

    1.有时候安装失败或者要装新版本的JDK,可先卸载JDK: a.   首先执行命令查看服务器下的JDK的版本:命令如下:rpm -qa |grep jdk b.   然后执行命令:yum -y rem ...

  7. 简单Socket网络通信

    问题:编写一个网络应用程序,有客户端和服务端,客户端向服务端发送一个字符串(如"Hello Socket"),服务器收到该 字符串后将其打印到命令行上,然后向客户端返回该字符串的长 ...

  8. 大米网赚项目介绍,官方唯一客服QQ:486594009

    大米平台项目来源   QQ:486594009 大米软件本质上是一个高质量网赚项目收集和发布平台,该平台的所有项目都是经过专业的测试团队实测有效的项目和教程,只要去做绝对可以赚钱.平台里面的项目类型包 ...

  9. 五、Vi和Vim编辑器

    1. Vim编辑器: 在Linux下一般使用vi编辑器来编辑文件.vi既可以查看文件也可以编辑文件.三种模式: 命令行.插入.底行模式 切换到命令行模式:按Esc键: 切换到插入模式:按 i .o.a ...

  10. 腾讯云服务器CentOS 7防火墙firewalld管理

    在腾讯云上买了个服务器(centOS7),部署了Tomcat(8080),Apache(80),MySQL(3306)等,一开始按照百度教程配置是把防火墙关闭了的.最近一段时间服务器总是莫名的被人修改 ...