Python爬虫学习之爬取猫眼电影top100

python学习 沙发 4月月 22日, 2017

Python爬虫学习之爬取猫眼电影top100

继续学习,不过主要还是参照老师的。




import re
import requests
import json
from requests.exceptions import  RequestException
from multiprocessing import Pool
def get_one_page(url):  #获取单页内容
    try:
        response = requests.get(url)
        if response.status_code==200:
           return response.text
    except RequestException:
        return None
def html_parse(html):  #解析单页内容 把解析的数据封装成LIST
    pattern = re.compile(
        'class="board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?data-val.*?>(.*?)</a>.*?class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>.*?class="integer">(.*?)</i>.*?class="fraction">(.*?)</i>',
        re.S)
    results = re.findall(pattern, html)

    for result in results:
        yield {
            'index' : result[0],
            'img': result[1],
            'title': result[2],
            'actor': result[3].strip()[3:],
            'time': result[4].strip()[5:],
            'score': result[5]+result[6],
        }

def write_file(content):  #以追加方式写入文件
    with open('result.txt','a',encoding='utf-8') as f:
       f.write(json.dumps(content,ensure_ascii=False)+'\n')
       f.close()

def main(offset): #主方法 分别调用
    url = 'http://maoyan.com/board/4?offset='+str(offset)
    html= get_one_page(url)

    for item in html_parse(html):
        print(item)
        write_file(item)


if __name__ == '__main__': #程序启动调用10次,多进程
    pool = Pool()
    pool.map(main, [i*10 for i in range(10)]) 


发表评论

昵称*

邮箱*

网址