我要爬爬虫(6)-爬取猫眼Top100电影

直接上代码

import requests
import re
import json
import time
#传入偏移量返回指定网页文本
def make_url(offset):
    url='http://maoyan.com/board/4?offset='+str(offset*10)
    #print(url)
    header={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
    }
    try:
        response=requests.get(url,headers=header)
        #先判断返回的状态码
        if response.status_code==200:
            return response.text
        else:
            return None
    except:
        return None
#用正则匹配网页目标内容
def crawl(pure_text):
    pattern='<img data-src="(.*?)".*?<p class="name.*?title="(.*?)".*?上映时间:(\d{4}-\d{2}-\d{2}).*?<p class="score.*?integer">(.*?)<.*?fraction">(\d)<'
    result=re.findall(pattern,pure_text,re.S)
    for item in result:
        #这里使用生成器,每次生成一个电影
        yield {
            'image':item[0],
            'title':item[1],
            'date':item[2],
            'score':item[3]+item[4]
        }
#将匹配到的内容写入文本里
def write_file(content):
    #写入模式选择a即为追加,w为覆盖
    with open('maoyan.txt','a',encoding='utf-8') as f:
        #print(type(json.dumps(content)))
        f.write(json.dumps(content,ensure_ascii=False)+'\n')
#执行函数:爬取+写入
def main(i):
    for item in crawl(make_url(i)):
        print(item)
        write_file(item)
if __name__=='__main__':
    #这里的i为偏移量
    for i in range(10):
        main(i)
        time.sleep(1)

本身难度不大,但我在代码规范和函数封装方面加深了认识。

猜你喜欢

转载自blog.csdn.net/qq_18831501/article/details/80686820