日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息

發(fā)布時(shí)間:2023/12/4 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

思路

1. 要獲得怎么樣的數(shù)據(jù)

2. 找到數(shù)據(jù)來(lái)源

3. 模擬瀏覽器發(fā)送請(qǐng)求獲得數(shù)據(jù)

4. 處理數(shù)據(jù),保存數(shù)據(jù)

第一步:

在這里數(shù)據(jù)是豆瓣top250中高于指定分?jǐn)?shù)的電影信息

信息有:名稱,評(píng)分,格言

第二步:

數(shù)據(jù)在網(wǎng)頁(yè)html中,這里我使用xpath語(yǔ)法分析htm代碼提取數(shù)據(jù)即可

當(dāng)然也有其它方法比如:找出頁(yè)面請(qǐng)求的數(shù)據(jù)包,抓包分析,找出數(shù)據(jù)來(lái)源

故猜測(cè)第k頁(yè)的url只需start為25*(k-1)

所以我們枚舉url,提取有效的數(shù)據(jù)。

第三步:

獲得網(wǎng)頁(yè)源碼是一般是發(fā)送get請(qǐng)求。故

制定請(qǐng)求頭

找到url

模擬瀏覽器發(fā)送數(shù)據(jù)def GetHelpfulElement(Html,socre):#根據(jù)html代碼獲得希望的element列表

Xpath=r'//div[@ class="item"]//div[@ class="star"]/span[2][text()>={}]/../../..'.format(socre)

HtmlElement=etree.HTML(Html)

return HtmlElement.xpath(Xpath)

def GetHtml(url):#根據(jù)url獲得html字符串

Headers={

"User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

}

resp=requests.get(url,headers=Headers)

return resp.content.decode()

最后一步就是代碼了

數(shù)據(jù)保存在date文件。

mport requests

from lxml import etree

from pprint import pprint

import re

'''

目的:爬取豆瓣top250中 評(píng)分高于指定值的電影名字,導(dǎo)演,演員信息,評(píng)分。

url="https://movie.douban.com/top250?start={}"25的增加,10次即可

針對(duì)每個(gè)html字符串用xpath語(yǔ)法進(jìn)行處理

1.找出符合條件的element元素

2.對(duì)element元素進(jìn)行信息提取成字典形式

3.把每一頁(yè)的信息整理成一個(gè)列表追加即可

'''

def GetHelpfulElement(Html,socre):#根據(jù)html代碼獲得希望的element列表

Xpath=r'//div[@ class="item"]//div[@ class="star"]/span[2][text()>={}]/../../..'.format(socre)

HtmlElement=etree.HTML(Html)

return HtmlElement.xpath(Xpath)

def GetHtml(url):#根據(jù)url獲得html字符串

Headers={

"User - Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"

}

resp=requests.get(url,headers=Headers)

return resp.content.decode()

def HandleList(Mylist):#處理xpath的獲得的列表 返回第一個(gè),否則返回None

return Mylist[0] if len(Mylist)!=0 else None

def ElementToDict(Element):#一個(gè)elemengt信息轉(zhuǎn)化為dict

ret={}

html=etree.tostring(Element,encoding="utf-8").decode()

Element=etree.HTML(html)#不知道為什么只有這樣,每次函數(shù)得到的信息才不同

RatingXpath=r'//span[@class="rating_num"]/text()'

TitleXpath=r'//a/span[@class="title"]/text()'

QuoteXpath=r'//span[@class="inq"]/text()'

ret['rating:num']=HandleList(Element.xpath(RatingXpath))

ret['title'] = HandleList(Element.xpath(TitleXpath))

ret['quote'] = HandleList(Element.xpath(QuoteXpath))

return ret

def ElementlistToDictlist(Elementlist):#element列表轉(zhuǎn)化為有用的dict列表

Mylist=[]

for i in Elementlist:

Mylist.append(ElementToDict(i))

return Mylist

def Save(Mydict):#保存一條信息

Keylist = ['title', 'rating:num', 'quote']

NameList = ['名稱', '評(píng)分', '格言']

with open('date.txt','a',encoding='utf-8') as fp:

for i in range(len(Keylist)):

fp.write(NameList[i])

fp.write(' : ')

fp.write(Mydict[Keylist[i]] if Mydict[Keylist[i]]!=None else " ")

fp.write('\n')

fp.write('\n')

def run(score):#實(shí)現(xiàn)主要邏輯

TempUrl = r"https://movie.douban.com/top250?start={}"

Dictlist =[]

for numbers in range(10):

Url = TempUrl.format(numbers * 25)

ElementList = GetHelpfulElement(GetHtml(Url), score)

TempDictList= ElementlistToDictlist(ElementList)

global total

total+=len(TempDictList)

for i in TempDictList:

Save(i)

if __name__ == '__main__':

RatingNum=float(input("請(qǐng)輸入最低評(píng)分:"))

total=0

print("請(qǐng)稍等...")

run(RatingNum)

print("共有:",total,"個(gè)結(jié)果。")

總結(jié)

以上是生活随笔為你收集整理的python豆瓣历史评分_Python实战-爬取豆瓣top250评分高于指定值的电影信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。