使用python爬虫豆瓣Top250的电影

        前几天在微博上看到李银河对《少年的你》的影评,具体的影评我忘记了,就记得她说在美国的时候养成了看电影的习惯,每天都要看两篇电影,她把豆瓣电影评分八分以上的都看完了,我就想自己平时真的很少看一些好电影,就决定去豆瓣上搜一些好电影来看看。利于不太娴熟的爬虫技术爬取了豆瓣Top250的电影,并把它们的名字保存到csv文件中。

1.requests.get(url)

        使用requests.get(url)对HTTP发送请求,可以设置一个异常判断语句,通过reponse.status_code==200来判断网络连接是否正常。

2.BeautifulSoup解析获取的网页内容

        我们使用BeautifulSoup来解析网页的内容,在使用这个库之前记得先安装,这个库不是自带的处理库。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。

<ol class="grid_view">
        <li>
            <div class="item">
                <div class="pic">
                    <em class="">1</em>
                    <a href="https://movie.douban.com/subject/1292052/">
                        <img width="100" alt="肖申克的救赎" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg" class="">
                    </a>
                </div>
                <div class="info">
                    <div class="hd">
                        <a href="https://movie.douban.com/subject/1292052/" class="">
                            <span class="title">肖申克的救赎</span>
                                    <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
                                <span class="other">&nbsp;/&nbsp;月黑高飞(港)  /  刺激1995(台)</span>
                        </a>

3.使用find_all函数

        使用find_all函数找到我们想要的内容,在这里我只需要电影的名字,名字都是在这样的片段中,如<img width="100" alt="肖申克的救赎" 。我们利用find_all函数找到所有的width="100"的所有片段,然后得到我们想要的电影名字。

4.保存

        将我们获取的数据保存到csv文件中,为了让每次写入的东西不覆盖,我们使用with open('top250.csv', 'a', encoding='utf-8') as f:。用a替代w。

代码片段如下,供大家参考。

from bs4 import BeautifulSoup
import re
import requests
from requests.exceptions import RequestException
import csv
from urllib.request import urlopen
'''
爬取猫眼Top100的电影
1.写一个函数循环爬取每一页的电影,先判断是否可以正确的连接网页
2.获得电影的名字,并将结果保存到csv中
'''
def judge_html(url):
    try:
        reponse=requests.get(url)
        if reponse.status_code==200: #判断网页连接状态是否正确
            return reponse.text
        else:
            return None
    except RequestException:
        return None

def spider_100(urltext):
    soup=BeautifulSoup(urltext,'html.parser')
    #获取所要的电影名字
    #将数据保存到CSV文件中
    item={'title':'none'}
    listname=[]
    commentsList = soup.find_all('img', {'width': 100})
    for j in range(25):
        titlename=commentsList[j]['alt']
        item['title']=titlename
        listname.append(item)
        with open('top250.csv', 'a', encoding='utf-8') as f:
            f.write(titlename+'\n')
        #listname.append(item)
    #print(listname)


if __name__=='__main__':
    with open('top250.csv', 'w', encoding='utf-8') as csvfile:
        # 爬取某个电影的前10页评论信息;
        headers = ['title']
        writer = csv.DictWriter(csvfile, headers)
        writer.writeheader()
    #url="https://maoyan.com/board/4?offset=0"
    for i in range(10):
        start=i*25
        url = "https://movie.douban.com/top250?start=%s&filter="%start
        urltexts=judge_html(url)
        spider_100(urltexts)


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值