利用python 爬取豆瓣即将上映的电影

该代码示例展示了如何使用Python爬虫从豆瓣电影网站抓取即将上映电影的基本信息,如标题、时间、类型、地区和热度,并通过自定义的doubanapi模块调用API获取电影的导演、演员和简介。最后,将所有信息整合到一个字典中并保存为列表。整个过程涉及网络请求、正则表达式、BeautifulSoup解析和JSON数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

仅学习交流

Upcoming.py

import re
import requests
from doubanapi import findmovie
from bs4 import BeautifulSoup
url = "https://movie.douban.com/cinema/later/taian/" 
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
res = requests.get(url=url, headers=headers)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'lxml')
movies = []
for sp in soup.find_all('div',class_= re.compile('item mod.*')):
    weber = sp.div.h3.a.get('href')
    title = sp.div.h3.a.string
    sp2 = sp.find_all('li')
    mtime = sp2[0].string
    mtype = sp2[1].string
    mlocat = sp2[2].string
    mpeople = sp2[3].string
    mid = re.sub("\D", "", weber)
    lits = findmovie(mid)
    dire = lits[0]
    actr = lits[1]
    content = lits[2]
    movie = {
        "标题":title,
        "时间":mtime,
        "类型":mtype,
        "地区":mlocat,
        "热度":mpeople,
        "导演":dire,
        "演员":actr,
        "简介":content,
        "详细信息":weber
    }
    print(movie)
    movies.append(movie)
print(movies)

doubanapi.py(调用api对电影信息进行补充)

import json
import requests

def findmovie(urlid):
    baseurl = 'https://movie.querydata.org/api?id='
    url = baseurl + urlid
    res = requests.get(url)
    res.encoding = 'utf-8'
    lis = res.text
    lis = json.loads(lis)
    print(res.text)        #测试
    content = lis['data'][0]['description']
    director = lis['director']
    actors = lis['actor']
    sumdire = ""
    sumact = ""
    for dire in director:
        sumdire += dire["data"][0]['name'] + " "
    for act in actors:
        sumact += act["data"][0]['name'] + " "
    sumer = {}
    sumer[0] = sumdire
    sumer[1] = sumact
    sumer[2] = content
    return sumer

好的,以下是使用Scrapy框架爬取豆瓣即将上映电影的步骤: 1. 创建Scrapy项目 在命令行中执行以下命令: ``` scrapy startproject douban_movie ``` 2. 创建Spider 在命令行中执行以下命令: ``` scrapy genspider movie_spider movie.douban.com ``` 这里我们以`movie_spider`为Spider名称,以豆瓣电影即将上映页面(https://movie.douban.com/cinema/later/)为起始URL。 3. 编写Spider代码 打开`douban_movie/spiders/movie_spider.py`文件,修改`start_urls`和`parse`方法如下: ```python import scrapy class MovieSpider(scrapy.Spider): name = 'movie_spider' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/cinema/later/'] def parse(self, response): for movie in response.css('.intro'): yield { 'title': movie.css('.title a::text').get(), 'date': movie.css('.date::text').get(), 'link': movie.css('.title a::attr(href)').get(), } ``` 解释一下代码: - `allowed_domains`属性指定了Spider可以爬取的域名; - `start_urls`属性指定了Spider的起始URL; - `parse`方法是Scrapy处理响应的默认方法,它接收响应作为参数,并返回一个可迭代的对象; - `response.css('.intro')`表示获取响应中所有class为`intro`的元素; - `movie.css('.title a::text').get()`表示获取`movie`元素内class为`title`的`a`标签的文本; - `movie.css('.date::text').get()`表示获取`movie`元素内class为`date`的文本; - `movie.css('.title a::attr(href)').get()`表示获取`movie`元素内class为`title`的`a`标签的`href`属性值。 4. 运行Spider 在命令行中执行以下命令: ``` scrapy crawl movie_spider -o movies.json ``` 这里使用了`-o`参数将爬取结果保存为JSON格式,保存在当前目录下的`movies.json`文件中。 5. 查看结果 打开`movies.json`文件,可以看到爬取到的豆瓣即将上映电影信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值