• 大小: 641KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-01-30
  • 语言: Python
  • 标签: python  爬虫  

资源简介

初学python爬虫小练-------爬取豆瓣排行榜上的电影,并分类存储到excel表

资源截图

代码片段和文件信息

# _*_ coding: UTF-8 _*-
# study number 15210220308
# name Vision
import re
import requests
import xlwt
from bs4 import BeautifulSoup


# 爬取电影排行列表
def getMovie(url):
# 设置headers,网站会根据这个判断你的浏览器及操作系统,很多网站没有此信息将拒绝你访问
    header = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36‘}
    # 用get方法打开url并发送headers
    html = requests.get(url headers=header)
    list = []
    # 使用html.parser解析
    soup = BeautifulSoup(html.text ‘html.parser‘)
    ol_grid_view = soup.find(class_=‘grid_view‘);
    itemList = ol_grid_view.find_all(class_=‘item‘);
    # 找到评价人数
    findJudge = re.compile(r‘(\d*)人评价‘)
    # 找到影片相关内容:导演,主演,年份,地区,类别
    findBd = re.compile(r‘(.*?)

‘ re.S)
    # 去掉无关内容
    remove = re.compile(r‘                            |\n|
|\.*‘)
    # 遍历item属性中的内容
    for item in itemList:
        # 名字
        movieName = item.find(class_=‘title‘);
        # 排行
        paihang = item.find(‘em‘);
        # 星级
        xingji = item.find(class_=‘rating_num‘);
        # 评论人数
        peopleNum = re.findall(findJudge str(item));
        # 概括
        kaikuo = item.find(class_=‘inq‘);
        # 导演/主演
        dy = re.findall(findBd str(item))[0];
        # 正则去空
        dy = re.sub(remove ““ dy);
        # 电影列表
        movie = [];
        movie.append(movieName.get_text())
        movie.append(paihang.get_text())
        movie.append(xingji.get_text())
        movie.append(peopleNum[0])
        # 防止空概括
        if not kaikuo is None:
            movie.append(kaikuo.get_text())
        else:
            movie.append(“无“);
        movie.append(dy)
        # 添加到主list
        list.append(movie);
    # for var in list:
    #     print var[‘name‘]  ‘-----NO:‘  var[‘No‘]‘-----rating_num:‘var[‘rating_num‘]‘----people:‘var[‘people‘]‘-----Inq:‘var[‘inq‘]‘-------bd:‘movie[‘bd‘]
    return list;

#将相关数据写入excel中
def saveData(datalistsavepathname):
    # 拼接路径
    savepath += name + ‘.xls‘
    # 设置excel的字符类型
    book = xlwt.Workbook(encoding=‘utf-8‘ style_compression=0)
    sheet = book.add_sheet(name cell_overwrite_ok=True)
    # 列名
    col = (‘电影名字‘ ‘豆瓣排行‘
           ‘评分‘ ‘评价数‘ ‘概况‘ ‘导演/主演/地区‘)

    for i in range(06):
        sheet.write(0 i col[i])
    for i in range(len(datalist)):
        data = datalist[i]
        for j in range(len(data)):
            sheet.write(i+1jdata[j])
    # 保存
    book.save(savepath)

def cityClass(list):
    civilMovie = []
    foreignMovie =[]
    civil = ‘中国|香港|台湾|大陆|China|china‘
    for i in range(len(list)):
        bd = list[i][5]
        b = re.search(civilbd)
        if not b is None:
            print ‘发现国内电影---排名‘list[i][1]‘的《‘list[i][0]‘》‘
            civilMovie.append(list[i])
        else :
            foreignMovie.append(list[i])
    saveData(civilMovie‘‘u‘豆瓣国内电影排行‘)
    s

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4012  2018-06-05 10:33  pc.py

     文件     475460  2018-05-21 15:50  网络爬虫.docx

     文件     228456  2018-05-21 15:50  正则表达式.docx

----------- ---------  ---------- -----  ----

               707928                    3


评论

共有 条评论