使用python爬虫豆瓣Top250的电影

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

1.requests.get(url)

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

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

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

3.使用find_all函数

        使用find_all函数找到我们想要的内容,在这里我只需要电影的名字,名字都是在这样的片段中,如肖申克的救赎

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)


 

你可能感兴趣的:(Python)