import requests
import os
from lxml import etree
from multiprocessing import Pool
def get_menu_urls(url):
req = requests.get(url)
req.encoding= 'gb2312'
html=req.text
selector=etree.HTML(html)
infos=selector.xpath('//div[@class="contain"][1]/ul/li[position()<10]/a')
url_list=[]
for info in infos:
a_text=info.xpath('text()')
a_href=info.xpath('@href')
if len(a_text)==0 or a_text[0]=='經(jīng)典影片':
pass
else:
menu_url=url+a_href[0]
print(a_text[0],menu_url)
req2 = requests.get(menu_url)
req2.encoding='gb2312'
html2=req2.text
selector2=etree.HTML(html2)
page_total=selector2.xpath('//div[@class="co_content8"]/div[@class="x"]//text()')[1].split('/')[0].replace('共','').replace('頁','')
print(page_total)
list_id=selector2.xpath('//div[@class="co_content8"]/div[@class="x"]//a/@href')[0].replace('2.html','')
print(list_id)
for i in range(1,int(page_total)+1):
right_url=list_id+str(i)
page_url=menu_url.replace('index',right_url)
item={}
item['menu']=a_text[0]
item['page']=page_url
url_list.append(item)
return url_list
def get_source(item):
page_url = item['page']
menu_name = item['menu']
base_dir=os.path.abspath(__file__)
parent_dir=os.path.dirname(base_dir)
menu_dir=os.path.join(parent_dir,menu_name)
print(menu_dir)
if os.path.isdir(menu_dir):
pass
else:
os.mkdir(menu_dir)
os.chdir(menu_dir)
req3=requests.get(page_url)
req3.encoding='gb2312'
html3=req3.text
selector3=etree.HTML(html3)
infos3=selector3.xpath('//div[@class="co_content8"]//a[@class="ulink"]/@href')
for info3 in infos3:
movie_url ='http://www.ygdy8.com' + info3
req4 = requests.get(movie_url)
req4.encoding = 'gb2312'
html4 = req4.text
selector4 = etree.HTML(html4)
movie_name = selector4.xpath('//div[@class="title_all"]/h1/font/text()')[0]
short_name = movie_name.split('《')[1].split('》')[0].replace('/','-')
file_name = os.path.join(menu_dir, short_name + 'txt')
with open(file_name,'w',encoding='utf-8') as file:
movie_sources=selector4.xpath('//td[@style="WORD-WRAP: break-word"]/a/@href')
if len(movie_sources)>0:
for movie_source in movie_sources:
print(page_url, movie_url, movie_name,movie_source)
file.write(page_url + '\n')
file.write(movie_name+'\n')
file.write(movie_source + '\n')
else:
pass
if __name__ == '__main__':
root_url = 'http://www.ygdy8.com'
url_list=get_menu_urls(root_url)
p=Pool(4)
p.map(get_source,url_list)
【Python爬蟲】第十七次作業(yè)
最后編輯于 :
?著作權(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)容
- def test(n): x=int(n)//4*6 y=int(n)%4 if y==0: return x e...
- 直接上圖, 感覺好蠢笤受。穷缤。求更方便的辦法。感论。 # 10.第十次 Python函數(shù)再練習 # 被2或者被3整除的正整數(shù)...