国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python爬蟲豆瓣近幾年的國產好作品

2019-11-08 03:08:17
字體:
來源:轉載
供稿:網友

本來是想爬國產電影,但是發現好像不太行,我是按照年份,結果里面什么都有這就比較尷尬了

import requestsimport stringfrom bs4 import BeautifulSoupimport pandasimport timeimport numpy as npimport xlsxwriterimport removie_select=[]#修改請求頭文件,避免封Firefox/3.5.6'},{'User-Agent':'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11'},{'User-Agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)'}]def getmovie(str_x):     res=requests.get('https://movie.douban.com/tag/'+str_x+'?start=0&type=T',headers=hds[np.random.randint(0,len(hds))])#GET獲取網站資源     res.encoding='utf-8'     soup=BeautifulSoup(res.text, 'html.parser')     #獲取一共有多少頁數     paginator=soup.select('.article')[0].text     #PRint(paginator)     paginator=soup.select('.paginator a')[-2].text     paginator=int(paginator)     #獲取該年所有的電影網頁     url='https://movie.douban.com/tag/'+str_x+'?start={}&type=T'     for i in range(0,paginator):          #隨機睡眠時間,防止封IP          time.sleep(np.random.rand() * 5)          #um=int(i)          #print('開始進行第'+(um+1)+'頁搜索')          movieurl=url.format(i*20)          #隨機抓去一個請求頭          res1=requests.get(movieurl,headers=hds[np.random.randint(0,len(hds))])          res1.encoding='utf-8'          soup1=BeautifulSoup(res1.text, 'html.parser')          for link in soup1.select('.pl2')[:20]:               #隨機睡眠時間,防止封IP               time.sleep(np.random.rand() * 5)               movie = {}               #獲取該電影的詳情網頁               try:                    h2=link.select('a')[0]['href']               except IndexError:                    continue               res2=requests.get(h2)               res2.encoding='utf-8'               soup2=BeautifulSoup(res2.text, 'html.parser')               #獲得電影的發行國家/地區               try:                    info = soup2.select('#info')[0]               except IndexError:                    continue               try:                    movie_from=re.findall('(?<=制片國家/地區: ).+?(?=/n)', info.text)[0]               except IndexError:                    continue               #獲取該電影的評分               rating_num='0'               try:                    rating_num=link.select('.rating_nums')[0].text               except IndexError:                    continue               #if(movie_from[0]==('中' or '香' or '臺')and float(rating_num)>=8.0):               #這個判斷是只判斷是否評分達到8.0,上面的判斷是否為國產的               if(float(rating_num)>=8.0):#滿足電影評分達到8.0以上                    #獲取電影名稱                    try:                         name=soup2.select('#content h1 span')[0].text                    except IndexError:                         continue                    movie['電影評分']=rating_num                    movie['電影名稱']=name                    print(name,rating_num)                    movie_select.append(movie)     df=pandas.DataFrame(movie_select)     #保存成Excel文件     df.to_excel(str_x+'高分電視劇/綜藝節目/紀錄片/電影.xlsx')for x in range(2015,2017):     str_x=str(x)     getmovie(str_x)要是有什么不懂的,我都在必要的位置設置了注釋

1.關于被封IP,這個地方我加了一個修改請求頭和兩個睡眠時間,可以防止封IP,但是豆瓣有API,也就是說,你可以用她的API去爬蟲

2.關于爬作品的發行地區,我采取的辦法,是一個正則表達式,這樣的話就可以找到,因為發行地區那一欄,她沒有任何標簽,所以比較尷尬


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锦州市| 新丰县| 孝义市| 武邑县| 封开县| 屏南县| 龙井市| 龙游县| 津市市| 晋江市| 清远市| 河北省| 莎车县| 百色市| 洛隆县| 五常市| 南丹县| 潜江市| 凯里市| 巴青县| 桃江县| 怀安县| 新郑市| 渭南市| 宣威市| 乌拉特前旗| 宁国市| 灵台县| 江川县| 云龙县| 米泉市| 富宁县| 双流县| 建始县| 徐汇区| 绥芬河市| 白沙| 聂拉木县| 全椒县| 昌宁县| 沅江市|