豆瓣Top250爬取

第一次做爬虫项目,真的开心,非常顺利爬出了豆瓣Top250的电影 @^_^@

自从今年6月份就开始自学python,断断续续一直没好好学。直到看了‘’老男孩python3全栈教育‘’,才有所收获。但是这网上的视频没有给我作业,学了就忘,我大概学了一多半python的基础使用之后,决定自己从爬虫学起。开始看崔庆才的教学视频,这个讲的很快,幸好我有看过许多基础,还能够听懂。不过最好从项目直接入手,回过头来再看崔庆才的基础知识教育,更有利于对爬虫的学习。话不多说,直接上代码。

import requests
from requests.exceptions import RequestException
from multiprocessing import Pool
import re
import json

def get_one_page(url):           # 获取网页的 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('<li>.*?<em class="">(\d+)</em>.*?<span class="title">(.*?)</span>.*?<div class="star">.*?average">(.*?)</span>.*?</li>',re.S)
    items = re.findall(pattern, html)
    for item in items:
        yield{
            'index':item[0],
            'title':item[1],
            'score':item[2]
        }

def write_to_file(content):       # 把提取出来的信息写到文件夹
    with open('result.txt','a',encoding='utf8')as f:
        f.write(json.dumps(content,ensure_ascii=False)+'\n')
        f.close()

def main(offset):
    url = 'https://movie.douban.com/top250?start=' + str(offset) + '&filter='  # 共提取10个网页内容
    html = get_one_page(url)     # 每个网页对应的信息代码
    for item in parse_one_page(html):
        print(item)
        write_to_file(item)

if __name__ == '__main__':
    pool = Pool()
    pool.map(main,[i*25 for i in range (10)])

最关键的函数是 parse_one_page(),所要提取的网页内容都由它决定。视频中的教学是让提取猫眼电影的,但由于猫眼电影访问后的response.status_code = 403,因此访问了豆瓣Top250,提取内容的方法是按照崔庆才的视频学的。

代码中的  '.*?'  用来代表任何内容,后面的  're.S’ ,说明  '.*?'  可以代替的内容也包括  ‘\n’ 。最后再把提取的内容写到result.txt的文件中就好了 (^__^)

猜你喜欢

转载自www.cnblogs.com/zhangguoxv/p/9922016.html