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)
【Python爬蟲作業(yè)】- 第16歧寺,17次燥狰,xpath整站抓取陽光電影網(wǎng)電影資源,并創(chuàng)建目錄保存文件
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門眠菇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來边败,“玉大人,你說我怎么就攤上這事捎废⌒Υ埽” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵登疗,是天一觀的道長排截。 經(jīng)常有香客問我,道長辐益,這世上最難降的妖魔是什么断傲? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮智政,結(jié)果婚禮上艳悔,老公的妹妹穿的比我還像新娘。我一直安慰自己女仰,他們只是感情好猜年,可當我...
- 文/花漫 我一把揭開白布抡锈。 她就那樣靜靜地躺著,像睡著了一般乔外。 火紅的嫁衣襯著肌膚如雪床三。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼找蜜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了稳析?” 一聲冷哼從身側(cè)響起洗做,我...
- 正文 年R本政府宣布奈虾,位于F島的核電站,受9級特大地震影響廉赔,放射性物質(zhì)發(fā)生泄漏肉微。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一蜡塌、第九天 我趴在偏房一處隱蔽的房頂上張望碉纳。 院中可真熱鬧,春花似錦馏艾、人聲如沸劳曹。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽铁孵。三九已至锭硼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕劝,已是汗流浹背檀头。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 一馆蠕、解析電影url請求構(gòu)造出的每個電影菜單的分頁url期升,解析出每個電影url二、xpath解析電影資源對解析出來的...
- 目錄 一互躬、 爬蟲的邏輯二播赁、XPath 爬取網(wǎng)站的數(shù)據(jù)三、函數(shù)封裝四吼渡、運行結(jié)果 一容为、 爬蟲的邏輯 作業(yè)內(nèi)容是抓取陽光...
- 1 有一次,佛陀和他的侍者在遠行的中途停下來歇息寄雀,佛陀饑渴難耐得滤,對侍者說:“我們剛才好像經(jīng)過一條小河,你去取些水來...