爬虫小白求助!爬虫豆瓣电影top250

爬是爬完了,运行也运行出来了,但是有问题。
因为同一个电影,会有多个译名,所以爬出来,电影名错位了,找了半天也没发现问题所在所以来求助了。

# -*- coding:utf-8 -*-
#  author: yukun
import requests
from bs4 import BeautifulSoup


# 发出请求获得HTML源码的函数
def get_html(url):
    # 伪装成浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
    resp = requests.get(url, headers=headers).text

    return resp


# 解析页面,获得数据信息
def html_parse():
    # 调用函数,for循环迭代出所有页面
    for url in all_page():
        # BeautifulSoup的解析
        soup = BeautifulSoup(get_html(url), 'html.parser')
        # 电影名
        alldiv = soup.find_all('span', class_='title')
        names = [a.get_text() for a in alldiv]
        # 导演
        allp = soup.find_all('p', class_='')
        authors = [p.get_text() for p in allp]
        # 评分
        starspan = soup.find_all('span', class_='rating_num', property='v:average')
        scores = [s.get_text() for s in starspan]
        # 简介
        sumspan = soup.find_all('span', class_='inq')
        sums = [i.get_text() for i in sumspan]
        for name, author, score, sum in zip(names, authors, scores, sums):
            name = '电影名:' + str(name) + '\n'
            author = '导演:' + str(author) + '\n'
            score = '评分:' + str(score) + '\n'
            sum = '简介:' + str(sum) + '\n'
            data = name + author + score + sum
            # 保存数据
            f.writelines(data + '=======================' + '\n')


# 获得所有页面的函数
def all_page():
    base_url = 'https://movie.douban.com/top250?start='
    last_url ='&filter='
    urllist = []
    # 从0到225,间隔25的数组
    for page in range(0, 250, 25):
        allurl = base_url + str(page) + last_url
        urllist.append(allurl)

    return urllist


# 文件名
filename = '豆瓣电影Top250.txt'
# 保存文件操作
f = open(filename, 'w', encoding='utf-8')
# 调用函数
html_parse()
f.close()

想问下,怎解决?
我自己觉得是这一块出现了问题:

 # 电影名
        alldiv = soup.find_all('span', class_='title')
        names = [a.get_text() for a in alldiv]

因为我单拎出来,跑了跑发现,结果是这样的:

[<span class="title">肖申克的救赎</span>, <span class="title"> / The Shawshank Redemption</span>, <span class="title">霸王别姬</span>, <span class="title">阿甘正传</span>, <span class="title"> / Forrest Gump</span>, <span class="title">这个杀手不太冷</span>, <span class="title"> / Léon</span>, ...
['肖申克的救赎', '\xa0/\xa0The Shawshank Redemption', '霸王别姬', '阿甘正传', '\xa0/\xa0Forrest Gump', '这个杀手不太冷', '\xa0/\xa0Léon'...

按理说
肖申克的救赎和The Shawshank Redemption是同一部电影的两种译名,应该是放在一块的,但是被拆分开了,我觉得是这个原因导致的错位,可是我不知道如何修改,谁能指点我一下呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值