zoukankan      html  css  js  c++  java
  • 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,	%s分,	%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(' ') fileObj.write(atag.url) fileObj.write( '————————————————————————————————————————————————————————————————————————————————————————————————') fileObj.write(' ') 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)
  • 相关阅读:
    P1121 环状最大两段子段和
    无题
    cdoj 1485 柱爷搞子串 sam treap
    自然数幂和
    Gym 100341C AVL Trees NTT
    线性筛分解质因子
    codeforces 366 Ant Man dp
    UVALive 6914 Maze Mayhem 轮廓线dp
    hdu 5790 Prefix 字典树 主席树
    莫比乌斯反演个人小结
  • 原文地址:https://www.cnblogs.com/ning-blogs/p/6669809.html
Copyright © 2011-2022 走看看