python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出
- '''
- Created on 2017年4月5日
- @author: Admin
- '''
- import requests
- from bs4 import BeautifulSoup as bsp
- # 网站链接
- site = 'http://www.runoob.com'
- lineNo = 1
- class Movie:
- def __init__(self, name, url):
- self.name = name
- self.url = url
- def __str__(self):
- return '%s,\t%s分,\t%s' % (self.name, self.url)
- __repr__ = __str__
- def getSoup(url):
- r = requests.get(url)
- # r.encoding = 'gb18030'
- return bsp(r.text, "html.parser")
- # 解析指定url,获取其中指定内容
- def filterMovie(url):
- resultList = []
# url处理,注意页面的编码集- soup = getSoup(url)
# 查找所有target=_top的a标签- atags = soup.find_all('a', target='_top')
- for atag in atags:
# 取到指定a标签的title属性- titleA = atag['title']
- if atag is not None:
- try:
# 根据取到的href属性,拼接上页面域名 获得完整的跳转url- url = site + atag['href']
- print('url:', url)
- print('title:', titleA)
# 根据主方法里面 _init_ 中定义的内容,将获取到的字段进行组合,然后放到集合中- movie = Movie(titleA, url)
- resultList.append(movie)
- except:
- print('error !!')
- return resultList
- # 根据传入的结果结合 按照指定格式保存到 文本文件中
- def saveInfo(atagList):
- # 注意指定编码,否则输入到txt文件的时候会乱码
- fileObj = open('vueJS.txt', 'a',encoding='utf8')
- for atag in atagList:
- atagName = str(atag.name)
- print('url info:', atagName)
- global lineNo
- fileObj.write('(' + str(lineNo) + ') ' + atagName )
- fileObj.write('\t')
- fileObj.write(atag.url)
- fileObj.write(
- '————————————————————————————————————————————————————————————————————————————————————————————————')
- fileObj.write('\n')
- lineNo += 1
- fileObj.close()
- # 获取到根据url整理出的一个结果集合,然后将结果集合保存的物理文件中
- def getPageResource(url):
- resultList = filterMovie(url)
- if len(resultList) > 0:
- saveInfo(resultList)
# 方法入口,定义一个页面url,然后去解析- if __name__ == '__main__':
- url = 'http://www.runoob.com/vue2/vue-tutorial.html'
- getPageResource(url)
python爬虫初级--获取指定页面上的菜单名称以及链接,然后导出的更多相关文章
- Java 爬虫(获取指定页面中所有的邮箱地址)
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.In ...
- objectARX 获取指定图层上所有实体ID
2015-12-17 //获取指定图层上所有实体ID AcDbObjectIdArray GetAllEntityId(const TCHAR* layername) { AcDbObjectIdAr ...
- python模块之HTMLParser抓页面上的所有URL链接
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParse ...
- php获取指定文件夹中文件名称
/** * php获取指定文件夹中文件名称 * @author jackie <2018.10.10> */ public static function getFileName($fil ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- python爬虫3——获取审查元素(板野友美吧图片下载)
测试环境:python2.7 + beautifulsoup4.4.1 + selenium2.48.0 测试网址:http://tieba.baidu.com/p/2827883128 目的是下载该 ...
- Python爬虫 爬取Web页面图片
从网页页面上批量下载jpg格式图片,并按照数字递增命名保存到指定的文件夹 Web地址:http://news.weather.com.cn/2017/12/2812347.shtml 打开网页,点击F ...
- python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)
1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: #coding: utf-8 import os, re # 代码所在目录 FI ...
- js禁用页面上右键菜单、选中和复制
有时候我们不想页面上的内容被人复制走,那么就可以使用js对页面进行设置,禁止右键菜单.禁止选中.禁止复制等功能可以有效的达到这个效果,js代码如下所示: /** * 禁用右键菜单 */ documen ...
随机推荐
- Spring boot 2.1.x 造成的问题
1. mysql-conector-java 版本默认使用了 8.0.1.5 导致:项目启动时的警告:Loading class `com.mysql.jdbc.Driver'. This is de ...
- echarts常用方法(一)
目前,项目中涉及到图表的,使用echarts的频率较多,因为UI设计一般不会考虑到是否能实现的问题,他们专注的只是显示的效果.所以作为前端开发,要对echarts进行不同程度的改造,组合,甚至重写等. ...
- prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!
序列模式挖掘是从序列数据库中发现频繁子序列作为模式. 子序列与频繁序列 了解了序列数据的概念,我们再来看看上面是子序列.子序列和我们数学上的子集的概念很类似,也就是说,如果某个序列A所有的项集在序列B ...
- os.path官方文档(附翻译)
This module implements some useful functions on pathnames. To read or write files see open(), and fo ...
- Vuex学习笔记(-)安装vuex
什么是Vuex? vuex是一个专门为vue.js应用程序开发的状态管理模式.即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. 安装vuex(前提是已经安装好vue-cli脚手 ...
- 工作笔记6-java相关
1.有时候安装失败或者要装新版本的JDK,可先卸载JDK: a. 首先执行命令查看服务器下的JDK的版本:命令如下:rpm -qa |grep jdk b. 然后执行命令:yum -y rem ...
- 简单Socket网络通信
问题:编写一个网络应用程序,有客户端和服务端,客户端向服务端发送一个字符串(如"Hello Socket"),服务器收到该 字符串后将其打印到命令行上,然后向客户端返回该字符串的长 ...
- 大米网赚项目介绍,官方唯一客服QQ:486594009
大米平台项目来源 QQ:486594009 大米软件本质上是一个高质量网赚项目收集和发布平台,该平台的所有项目都是经过专业的测试团队实测有效的项目和教程,只要去做绝对可以赚钱.平台里面的项目类型包 ...
- 五、Vi和Vim编辑器
1. Vim编辑器: 在Linux下一般使用vi编辑器来编辑文件.vi既可以查看文件也可以编辑文件.三种模式: 命令行.插入.底行模式 切换到命令行模式:按Esc键: 切换到插入模式:按 i .o.a ...
- 腾讯云服务器CentOS 7防火墙firewalld管理
在腾讯云上买了个服务器(centOS7),部署了Tomcat(8080),Apache(80),MySQL(3306)等,一开始按照百度教程配置是把防火墙关闭了的.最近一段时间服务器总是莫名的被人修改 ...