三阶段day26-爬虫介绍

爬取猫眼网站的电影信息

爬取页面信息的基本思路是:

1、获取页面信息
2、解析页面信息并匹配自己想要爬取的数据
3、组装获取的数据并保存至本地或者数据库
其中第二步解析页面时,需要充分分析页面的结构和信息来源,这也是能否爬取到信息最关键的准备。需要分析信息的来源是js渲染出来的还是页面本身自带,以便决定爬取信息的方式。

import json
import requests
import re


# 1获取网页
def get_page(url):
    # 伪装浏览器header
    headers = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)"
    }
    # 获取页面信息html
    response=requests.get(url,headers=headers)
    if response.status_code==200:
        return  response.text
    return 'error with you'


#去空格
def strips(list):
    n_list=[]
    for i in list:
        n_list.append(i.strip())
    return  n_list


# 2解析网页,爬取想要数据并返回
def parse_page(html):
#采用正则表达式匹配
    # 根据网页源代码编写所需内容正则表达式
    # 电影名
    title = re.compile('movieId.*?>.*?(.*?)

',re.S) starts=re.findall(start,html) starts=strips(starts) # 上映时间 time=re.compile('

上映时间:(.*?)

',re.S) times=re.findall(time,html) strips(times) # 评分 list=[] mark1=re.compile('(.*?)',re.S) marks1=re.findall(mark1,html) mark2=re.compile('(.*?)',re.S) marks2 = re.findall(mark2, html) for i in range(len(marks1)): list.append(marks1[i]+(marks2[i])) strips(list) # 图片链接 picture=re.compile('movieId.*?>.*?

爬取多个网页

思路:找到类似信息的网址,其一般有规律可循,对多个网页循环执行爬取信息即可

from day01.test2 import get_page, parse_page, save_json


def main_list():

    # 爬取多个网页
    result_list=[]
    for i in range(10):
        id=i*10
        # 组装域名
        url='https://maoyan.com/board/4?offset=%d' %id
        # 获取网页信息
        html=get_page(url)
        # 解析网页,爬取信息,组装数据
        result=parse_page(html)
        # 添加至一个列表中
        result_list.extend(result)
        print(i)
        print(result)
    # 保存至本地,并完成数据的格式转换
    save_json(result_list)

    return result_list

main_list()

你可能感兴趣的:(三阶段day26-爬虫介绍)