python爬虫:爬取猫眼电影(分数的处理和多线程)

本文介绍使用Python的requests和BeautifulSoup库爬取猫眼电影排行榜的实现过程,包括电影排名、名称、主演、上映时间及评分等信息的抓取,并通过多线程提高爬取效率。

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

爬取用的库是requests和beautifulsoup,代码编写不难,主要是个别的细节处理需要注意

1、电影得分的处理


右键审查元素,我们看到分数的整数部分和小数部分是分开的,在beautifulsoup中,我们可以用(.strings或者.stripped_strings),但是这样取出来的内容是一个可迭代的生成器,只用用列表或字典才能看到结果

到网上搜罗了一圈终于找到解决办法,也是基础知识存在问题,解决的办法如下


2、多线程

多线程要用到multiprocessing库,具体方法参见代码

import requests
from  requests.exceptions import RequestException
from bs4 import BeautifulSoup
import time
import pymongo
from multiprocessing import Pool

client = pymongo.MongoClient('localhost',27017)
movie = client['movie']
maoyan = movie['maoyan']
# for item in maoyan.find():
#     print(item)
def get_one_page(url):
    try:
        reponse = requests.get(url)
        if reponse.status_code == 200:
            return reponse.text
        return None
    except RequestException:
        return None
def parse_one_page(html):
    soup = BeautifulSoup(html,'lxml')
    # print(soup)
    ranks = soup.select('#app > div > div > div.main > dl > dd > i')#text
    titles = soup.select('div.movie-item-info p.name a')#text
    stars = soup.select('div.movie-item-info p.star')#text
    times = soup.select('div.movie-item-info p.releasetime')
    scores = soup.select('#app > div > div > div.main > dl > dd > div > div > div.movie-item-number.score-num > p')
    for rank,title,star,time,score in zip(ranks,titles,stars,times,scores):
        data = {
            'rank':rank.text.strip(),
            'title':title.text.strip(),
            'star':star.text.strip(),
            'time':time.text.strip(),
            'score':''.join(score.strings)
        }
        maoyan.insert(data)
        print('yes')


def main(offset):
    url = 'http://maoyan.com/board/4?offset=' + str(offset)
    html = get_one_page(url)
    # print(html)
    parse_one_page(html)
if __name__=='__main__':
    pool = Pool()
    pool.map(main,[i*10 for i in range(10)])




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值