pythonを使って豆弁映画TOP 250を登る

2651 ワード

pythonを使用して豆弁映画TOP 250①を取得指定インタフェースのhtmlテキスト情報プレート②ランキングとリンクを取得します.名前:名前、ランキングとリンクはdiv class='pic'の下で属性値を取得するときに直接.a.attrs['href']を使用するとstrip()前後のtf③スコアと評価プレート用select['span']を除去するのに便利です2番目のspanタグ内容xpath 1は1④excelモジュールに書き込む⑤大きなリストを整理する⑥実行:①指定されたインタフェースのhtmlテキスト情報プレートを取得する
②ランキングとリンク、名前を取得する:名前のため、ランキングとリンクはdiv class='pic'の下で属性値を取得するときに直接.a.attrs['href']を使うとstrip()の前後のtfを除去するのに便利です
③スコア取得と評価プレートselect[‘span’]で返される2番目のspanタグ内容xpath 1は1注:xpathとbs 4の戻りインデックスが異なる
④エクセルモジュールへの書き込み
⑤大きなリストを整理する
⑥実行:
具体コード:import requestsfrom bs 4 import BeautifulSoupimport csv
rank=[]link=[]names=[]score=[]assess=[]aList=[]def getHMLText(url):try:
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
r=requests.get(url,timeout=30,headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text

except Exception as e:
print("      ",e)  #e.status_code    

def getContent(Html):soup=BeautifulSoup(Html,“html.parser”)for li in soup.select(.grid_view li"):for item in li.findall('div',class='pic'):rank.append(item.text.strip()#ランキングlink.append(item.a.attrs['href'])names.append(item.a.attrs['alt'])
def getScoreAndassess(Html):soup = BeautifulSoup(Html, "html.parser")for li in soup.select(".grid_view li"):for info in li.findall('div', class='info'):for bd in info.findall('div',class='bd'):score.append(bd.div.select('span')[1].text)assess.append(bd.div.select('span')[3].text)
print(bd.div.select('span')[3].text)
def saveListCSV(fileName,aList):try:with open(fileName,'w',newline=')as fp:writer=csv.writer(fp)writer.writer.writer.writerow(["ランキング","映画名","採点","評価数","URL")for item in aList:writer.writer.writerow(item)print('{0}保存成功!共{1}条記録'.format(fileName,len(aList))foritem in aList:writer.writer.writer(fileName,len(aList)))except IOError as err:print(fileName,'ファイル作成エラー:',err)
def allLsit(aList):for i in range(len(rank)):aList.append([rank[i],names[i],score[i],assess[i],link[i]])return aList
if name=="main":for i in range(1, 11):url = "https://www.ozlfax.com"+ str((int(i) - 1) * 25) + "&filter="Html= getHMLText(url)getContent(Html)getScoreAndassess(Html)aList=allLsit(aList)
print(aList)
data=aList[1125:]saveListCSV('./movie.csv',data)