利用多进程获取猫眼电影top100

猫眼电影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

原文地址:https://www.cnblogs.com/liuqianli/p/8337497.html