猫眼电影top100 是数据是在加载网页时直接就已经加载了的,所以可以通过requests.get()方法去获取这个url的数据,能过对得到的数据进行分析从而获得top100的数据,
把获取的数据存入本地文件中.
代码如下:
import requests import re import json from multiprocessing import Pool #引用异常处理机制,这个类是所有异常类的超类,所以能全捕捉 from requests.exceptions import RequestException def get_one_page(url): try: response=requests.get(url) if response.status_code==200: return response.text return None except RequestException : return None def parse_one_page(html): pattern=re.compile('<dd>.*?board-index.*?(d+)</i>.*?data-src="(.*?)".*?name"><a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>',re.S) items=re.findall(pattern,html) for item in items: yield { "index":item[0], "iamge":item[1], "title":item[2], "actor":item[3].strip()[3:], "time":item[4].strip()[5:], "score":item[5]+item[6] } def write_to_file(content): with open("result.txt","a",encoding="utf8") as f: f.write(json.dumps(content,ensure_ascii=False)+" ") # f.close() 可以不关 def main(offset): url="http://maoyan.com/board/4?offset="+str(offset) html=get_one_page(url) # print(html) # parse_one_page(html) for item in parse_one_page(html): print(item) write_to_file(item) # print(html) if __name__=="__main__": # for i in range(10): # main(i*10) # 使用多进程 pool=Pool() pool.map(main,[i*10 for i in range(10)])
猫眼电影top100每个页面显示10部电影,用offset 来构造网页,
结果如下:
github https://github.com/573320328/tools.git