'''
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爬虫初级--获取指定页面上的菜单名称以及链接,然后导出的更多相关文章

  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. [GXOI/GZOI2019]旧词

    很像LNOI 2014 LCA那道题. 同样的套路,离线以后直接扫描线. k=1的话就是原题. 考虑一般情况. 原本的做法是对x到根的这条链做一下区间+1操作,目的是为了是的在深度为i的位置得到的贡献 ...

  2. Linux基础命令ls

    目录处理命令:ls -a 显示所有文件,包括隐藏文件 --all -l h  详细信息显示  --long --human -d 查看目录属性  - -i 查看文件唯一编号 -表示文件 d表示目录 l ...

  3. C++标准模板库(STL)之Pair

    1.Pair的常用用法 pair:两个元素绑在一起作为一个合成元素.可以看成是两个元素的结构体. struct pair { typeName1 first; typeName2 second; }; ...

  4. Source Insight 4.0安装使用教程

    一.说明 Source Insight是什么:Source Insight是一款代码编缉.浏览.分析工具. Source Insight与文本编缉器有什么区别:Notepad++等文本编缉器也可以编缉 ...

  5. 苹果手机的SB系列(2)为什么不能重命名?

    为什么没有重命名? 在手机端不能重命名,在WINOWS端文件是只读的,连他TM的只读属性都无法改,不能重命名,你让我怎么备份? 我怎么知道哪些照片上次备份过了?又重头来过?还是要用苹果的MAC?这种态 ...

  6. React-Error

    1. react创建一个单页应用,官网给的命令是ngx create-react-app my-project 2. window上表示,安装失败 3.解放办法:npm install -g crea ...

  7. 利用Delphi编写Socket通信程序

    一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...

  8. Android Studio修改apk打包生成名称

    在app的build.gradle文件的android{}括号里添加: android.applicationVariants.all { variant -> variant.outputs. ...

  9. Loadrunner录制https脚本

        随着公司的发展,公司原有的SVN服务器存放的内容不断增加,容量已经不能满足后续需求,首先我们想到对服务器进行扩容,然而因为各种原因服务器不能进行扩容,所以公司决定更换新的SVN服务器,在做数据 ...

  10. Linux权限总结

    第1章 课前小拓展 虚拟机打不开原因 问题: 该虚拟机似乎正在使用中. 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权.否则,请按“取消(C)”按钮以防损坏. 配置文件: E:\vm ...