BeautifulSoup爬取豆瓣电影Top250

任务要求

爬取豆瓣电影Top250的电影名、评分、短评、评分人数等信息

在这里插入图片描述


通过博客对beautifulSoup4的简单介绍,现在开始实战啦,没有看过的,可以先看看

推荐阅读:

  1. 使用xpath爬取数据
  2. jupyter notebook使用
  3. BeautifulSoup爬取豆瓣电影Top250
  4. 一篇文章带你掌握requests模块
  5. Python网络爬虫基础–BeautifulSoup

直接上代码

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 22 12:03:06 2020

@author: kun
"""


import requests
from bs4 import BeautifulSoup
import pandas as pd
from fake_useragent import UserAgent
ua = UserAgent()

headers = {
'user-agent': ua.random,
'Host': 'movie.douban.com'
}


def get_movies():

    movie_list = []
    for i in range(0,10):
        link = 'https://movie.douban.com/top250?start=' + str(i * 25)
        r = requests.get(link, headers=headers, timeout= 10)
        
        soup = BeautifulSoup(r.text, "lxml")
        div_list = soup.find_all('div', class_='info')
        for each in div_list:
            title = each.find('div', class_='hd').a.span.text.strip()
            info = each.find('div', class_='bd').p.text.strip()
            info = info.replace("\n", " ").replace("\xa0", " ")
            info =  ' '.join(info.split())
            rating = each.find('span', class_='rating_num').text.strip()
            num_rating = each.find('div', class_='star').contents[7].text.strip()
            try:
                quote = each.find('span', class_='inq').text.strip()
            except:
                quote = ""
            
            movie_list.append([title, info, rating, num_rating, quote])
        df = pd.DataFrame(movie_list,columns=['电影名称', '信息', '评分', '评价人数', '短评'],index=None)
      
        
        
        df.to_csv("douban.csv")
    return movie_list
        
movies = get_movies()
print (movies)
    

到这里就结束了,如果对你有帮助你,欢迎点赞关注,你的点赞对我很重要

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是使用Python爬取豆瓣电影Top250榜的示例代码: ```python import requests from bs4 import BeautifulSoup import sqlite3 # 创建数据库连接 conn = sqlite3.connect('movies.db') cursor = conn.cursor() # 创建数据表 cursor.execute('''CREATE TABLE IF NOT EXISTS movies (id INTEGER PRIMARY KEY, title TEXT, rating REAL, num_ratings INTEGER, summary TEXT, url TEXT)''') # 爬取Top250榜单 for i in range(0, 250, 25): url = f'https://movie.douban.com/top250?start={i}&filter=' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') movies = soup.find_all('div', class_='info') # 解析电影信息并存储到数据库 for movie in movies: title = movie.find('span', class_='title').text rating = float(movie.find('span', class_='rating_num').text) num_ratings = int(movie.find('span', class_='rating_num').find_next_sibling().text[:-3]) summary = movie.find('span', class_='inq').text if movie.find('span', class_='inq') else '' url = movie.find('a')['href'] cursor.execute(f"INSERT INTO movies (title, rating, num_ratings, summary, url) VALUES ('{title}', {rating}, {num_ratings}, '{summary}', '{url}')") conn.commit() # 关闭数据库连接 conn.close() ``` 该代码使用requests和BeautifulSoup爬取豆瓣电影Top250榜单,并将电影信息存储到SQLite数据库中。具体步骤如下: 1. 导入需要的库:requests、BeautifulSoup和sqlite3。 2. 创建数据库连接,并创建名为movies的数据表。 3. 循环爬取Top250榜单,每次爬取25部电影。 4. 解析每部电影的信息,包括电影名称、评分、评分人数、电影概述和电影链接。 5. 将电影信息插入到数据库中。 6. 关闭数据库连接。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北山啦

这个功能还没人试过呢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值