【Python爬蟲作業(yè)】- 第16歧寺,17次燥狰,xpath整站抓取陽光電影網(wǎng)電影資源,并創(chuàng)建目錄保存文件

from lxml import etree
import requests
import os
from multiprocessing import pool

# -----------------------------------------------
# 一斜筐、xpath過濾標簽練習
# 學完視頻將陽光電影網(wǎng)首頁導航欄前9個菜單url抓取,輸出結(jié)果為可以正常訪問的url, 并過濾掉"經(jīng)典影片"的菜單url

def get_pageUrl(root_url):
        url_list = []
        req=requests.get(root_url)
        req.encoding='gb2312'
        html=req.text

        selector=etree.HTML(html)
        infos=selector.xpath('//*[@id="menu"]/div/ul//li[position()<10]/a')
        for info in infos:
                menus_text=info.xpath('text()')
                menus_href=info.xpath('@href')
                if len(menus_text[0])>0 and menus_text[0]!='經(jīng)典影片':
                        menu_text=menus_text[0]
                        menu_href=root_url+menus_href[0]
                        # print(menu_text,menu_href)

                        # ------------------------------------------------------------------------------------------------------------------
                        # 二龙致、循環(huán)內(nèi)請求解析
                        # 對第一題解析出來的url進行請求,解析出每個菜單的分頁總數(shù),每個菜單的id,并構(gòu)造出全部的菜單分頁請求url,全部存進一個url_list變量,url_list變量為列表
                        req2=requests.get(menu_href)
                        req2.encoding='gb2312'
                        html2=req2.text
                        selector2=etree.HTML(html2)
                        page_info=selector2.xpath('//div[@class="x"]//text()')[1].split('/')[0].replace('共','').replace('頁','').strip()
                        list_id=selector2.xpath('//div[@class="x"]//a/@href')[0].split('.')[0].split('_')[1]
                        # print(menu_text,menu_href,'TotalPage:',page_info,'list_id:',list_id)
                        for ipage in range(int(page_info)):
                                page_url=menu_href.replace('index.html','')+'list_'+list_id+'_'+str(ipage+1)+'.html'
                                item = {}               #每個元素為字典類型
                                item['menu_name'] = menu_text
                                item['page_url'] = page_url
                                url_list.append(item)
        return url_list

# 一、解析電影url
# 請求15題構(gòu)造出的每個電影菜單的分頁url顷链,解析出每個電影url
# 二目代、xpath解析電影資源
# 對第一題解析出來的電影url進行請求,解析出最終的電影名稱 電影下載地址
# 三、對代碼進行分裝成函數(shù)
def get_source(url_list):
        i=0     #每個menu下的影片文件編號蕴潦,便于調(diào)試
        for url in url_list:
                base_dir=os.path.abspath(__file__)
                parent_dir=os.path.dirname(base_dir)
                menu_dir=os.path.join(parent_dir,url['menu_name'])
                if os.path.isdir(menu_dir):
                        pass
                else:
                        print(menu_dir)
                        os.mkdir(menu_dir)
                os.chdir(menu_dir)

                req3=requests.get(url['page_url'])
                req3.encoding='gb2312'
                html3=req3.text
                selector3=etree.HTML(html3)
                movies_url=selector3.xpath('//div[@class="co_content8"]//a[@class="ulink"]/@href')

                for movie_url in movies_url:
                        movie_url=root_url+movie_url
                        req4=requests.get(movie_url)
                        req4.encoding='gb2312'
                        html4=req4.text
                        selector4=etree.HTML(html4)
                        movie_names=selector4.xpath('//div[@class="title_all"]/h1/font/text()')
                        movie_sources=selector4.xpath('//td[@style="WORD-WRAP: break-word"]/a/@href')
                        movie_name = movie_names[0]
                        if len(movie_sources)>0:                #可能存在多個source像啼,因此需要判斷,并均保存下來
                                i=i+1
                                filename=str(i)+'_'+movie_name.split('《')[1].split('》')[0].replace('/','_')+'.txt'
                                ff = open(filename, 'w', encoding='utf-8')
                                for movie_source in movie_sources:
                                        print(url['page_url'],movie_url, movie_name, movie_source,filename)

                                        ff.write(movie_name+'\n')
                                        ff.write(movie_url+'\n')
                                        ff.write(movie_source+'\n')
                                ff.close()

# 一潭苞、os創(chuàng)建目錄用法
# 二忽冻、函數(shù)傳參
# 三、多進程調(diào)用
if __name__=='__main__':
        root_url = 'http://www.ygdy8.com'
        url_list=get_pageUrl(root_url)
        get_source(url_list)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末此疹,一起剝皮案震驚了整個濱河市僧诚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝗碎,老刑警劉巖湖笨,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蹦骑,居然都是意外死亡慈省,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門眠菇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來边败,“玉大人,你說我怎么就攤上這事捎废⌒Υ埽” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵登疗,是天一觀的道長排截。 經(jīng)常有香客問我,道長辐益,這世上最難降的妖魔是什么断傲? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮智政,結(jié)果婚禮上艳悔,老公的妹妹穿的比我還像新娘。我一直安慰自己女仰,他們只是感情好猜年,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布抡锈。 她就那樣靜靜地躺著,像睡著了一般乔外。 火紅的嫁衣襯著肌膚如雪床三。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天杨幼,我揣著相機與錄音撇簿,去河邊找鬼。 笑死差购,一個胖子當著我的面吹牛四瘫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欲逃,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼找蜜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稳析?” 一聲冷哼從身側(cè)響起洗做,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎彰居,沒想到半個月后诚纸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡陈惰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年畦徘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抬闯。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡井辆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出画髓,到底是詐尸還是另有隱情掘剪,我是刑警寧澤平委,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布奈虾,位于F島的核電站,受9級特大地震影響廉赔,放射性物質(zhì)發(fā)生泄漏肉微。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一蜡塌、第九天 我趴在偏房一處隱蔽的房頂上張望碉纳。 院中可真熱鬧,春花似錦馏艾、人聲如沸劳曹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铁孵。三九已至锭硼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕劝,已是汗流浹背檀头。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岖沛,地道東北人暑始。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像婴削,于是被迫代替她去往敵國和親廊镜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容