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)
相關文章
相關標籤/搜索