爬取貓眼電影網前100的電影排名
阿新 • • 發佈:2018-11-16
爬取貓眼電影網前100的電影排名
貓眼電影網:http://maoyan.com/board/4
確定要爬取的資料:
1:排名
2:電影名稱
3:主演
4:上映舌尖
5:評分
構造下一頁url
首頁:http://maoyan.com/board/4?offset=0
第二頁 http://maoyan.com/board/4?offset=10
第十頁 http://maoyan.com/board/4?offset=100
我們發現url中變化的只有數字 那麼我們可以通過迴圈構造出這個url
我們需要的資訊全都在這些標籤中:
用紅色圈起來的地方 就是我們需要的資訊 我們一個個找到他們 然後將資訊提取出來
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/11/5 18:06 # @Desc : 爬取貓眼電影網前100的電影排名 import requests import json from pyquery import PyQuery as pq headers = { 'proxy': 'https: 219.135.169.85:47315', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36' ' (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36' } def start_request(url): """發起請求 獲得頁面原始碼""" r = requests.get(url, headers=headers) return r.text def parse(text): """解析原始碼 獲得資料""" doc = pq(text) # 找到頁面原始碼中的dd標籤 infos = doc('dl.board-wrapper dd').items() for info in infos: refect = {} refect['rank'] = info.find('i.board-index').text() # 排名 refect['name'] = info.find('p.name a').text() # 電影名字 refect['actor'] = info.find('p.star').text() # 演員 refect['time'] = info.find('p.releasetime').text() # 上映時間 refect['score'] = info.find('p.score').text() # 評分 result_list.append(refect) return result_list def write_json(result): """寫入json檔案""" s = json.dumps(result, indent=4, ensure_ascii=False) with open('cateye.json', 'w', encoding='utf8') as f: f.write(s) print("寫入完成") def main(): for i in range(10): """構造url""" url = "http://maoyan.com/board/4?offset={}".format(i * 10) text = start_request(url) result = parse(text) write_json(result) if __name__ == "__main__": result_list = [] main()
執行程式後來檢視json檔案:
OK 到此結束!