零基础学会网络爬虫:电影排名

网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。网络爬虫的爬行策略分为深度优先和广度优先。如下图是深度优先的一种遍历方式是A到B到D 到E 到C到 F(ABDECF)而宽度优先的遍历方式ABCDEF 。

一、环境准备

1.1 requests和beautifulsoup4库的安装

pip install requests

pip install beautifulsoup4

1.2 requests的使用

requests库的函数


零基础学会网络爬虫:电影排名

requests库的函数


1.2.1 requests.get()函数

get()是获取网页最常用的方式,在调用requests.get(url)函数后,返回的网页内容会保存为一个Response 对象,其中,get()函数的参数url 必须链接采用HTTP 或HTTPS方式访问

import requests as rt

my_url="http://www.baidu.com"

my_data=rt.get(my_url)

print(type(my_data))

零基础学会网络爬虫:电影排名

Response 对象的属性

1.3 beautifulsoup4

(1)使用方法soup.方法.

(2)find_all()方法

(3)Select()方法

1.4爬取豆瓣top250

  • 1

    肖申克的救赎

    肖申克的救赎

    / The Shawshank Redemption

    / 月黑高飞(港) / 刺激1995(台)

    [可播放]

    导演: 弗兰克·德拉邦特 Frank Darabont 主演: 蒂姆·罗宾斯 Tim Robbins /...

    1994 / 美国 / 犯罪 剧情

    9.7

    1674127人评价

    希望让人自由。

  • 方法一:利用find_all

    (1)详细代码,爬取前25个排名电影

    import requests as rt
    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
    'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    my_url=r"https://movie.douban.com/top250?start=0&filter="
    my_data = rt.get(my_url, headers=headers, timeout=30)
    my_data.encoding="utf-8" #解决中文乱码问题


    from bs4 import BeautifulSoup

    as bs
    soup=bs(my_data.text,"html.parser")
    x1=soup.find_all("li")
    for i in x1:
    if i.find('em')!= None:
    print(i.find('em').text,end=" ")
    print(i.find('span', class_='title').text,end=" ")
    print(i.find('span', class_='rating_num').text, end=" ")
    print(i.find('span', class_='inq').text, end=" ")
    print()


    零基础学会网络爬虫:电影排名

    排名电影


    (2)详细代码,爬取前250个排名电影(添加循环访问)

    import requests as rt
    from bs4

    import BeautifulSoup as bs
    headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
    'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
    }
    x2=range(0,250,25)
    for my_n in x2:
    my_url=r"https://movie.douban.com/top250?start="+str(my_n)+r"&filter="
    my_data = rt.get(my_url, headers=headers, timeout=30)
    my_data.encoding="utf-8" #解决中文乱码问题


    soup=bs(my_data.text,"html.parser")
    x1=soup.find_all("li")
    for i in x1:
    if i.find('em')!= None:
    try

    :
    print(i.find('em').text,end=" ")
    print(i.find('span', class_='title').text,end=" ")
    print(i.find('span', class_='rating_num').text, end=" ")
    print(i.find('span', class_='inq').text, end=" ")
    except:
    pass
    print()


    零基础学会网络爬虫:电影排名

    排名电影



    你学会了吗?明天介绍其他的方法。

    "

  • 分享到:


    相關文章: