1. 程式人生 > >python3 --小爬蟲(爬取美劇字幕)

python3 --小爬蟲(爬取美劇字幕)

# !bin/usr/env python3
# coding=utf-8import re
import urllib.request
from bs4 import BeautifulSoup

'''獲取網址'''
def get_url(url):
    Url = []
    #url = 'http://www.kekenet.com/video/16692/'
f = urllib.request.urlopen(url)
    html = f.read()
    soup = BeautifulSoup(html,'html.parser')
    content = soup.find_all('ul'
,id='menu-list') for tag in content: li = tag.find_all('li') #型別<class 'bs4.element.ResultSet'> #print(type(li)) for tag2 in li: h = tag2.find_all('h2') for tag3 in h: h1 = tag3.find_all('a',text=re.compile(r'MP3+')) # re.compile() 正則表達匹配,匹配內容不能為中文
for tag4 in h1: t = tag4.get_text() #獲取內容 get_url = tag4.get('href') #獲取URL Url.append(str(get_url)) Url = reversed(Url) #將列表中的所有元素進行倒序排列 return (list(Url)) #必須新增list,將其轉換為list #print(list(Url)) '''獲取網頁中的內容''' url1 = [] base_url = 'http://www.kekenet.com/video/15830/List_'
for i in range(18): full_url = base_url + str(i+1) +'.shtml' url1.append(full_url) url1.append('http://www.kekenet.com/video/15830/') # print(url1) # print(len(url1)) n = 0 for i in range (len(url1)): url = url1[i] Get_Url = get_url(url) for i in range(len(Get_Url)): f = urllib.request.urlopen(Get_Url[i]) html = f.read() soup = BeautifulSoup(html,'html.parser') #解析抓取到到html title = soup.title.get_text() #獲取html的title en_contents = soup.find_all('div',class_='qh_en') zg_contents = soup.find_all('div',class_='qh_zg') file = 'M_S6.txt' with open(file,'a') as f: #追加的方式寫入檔案 f.write(title) n = n+1 for content in zip(en_contents,zg_contents): #同時輸出兩個列表中的元素,先將其轉化為元組 f.write(content[0].get_text()) #輸出元組中的第一個元素,即第一個列表中的第一個元素 f.write(content[1].get_text()) #輸出元組中的第2個元素,即第2個列表中的第1個元素 f.write('\n') #換行
#break
print(n)