• 大小: 23KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-02-06
  • 语言: 其他
  • 标签: python  爬虫  

资源简介

爬取豆瓣电影排名程序,包含非常详细的注释,基本每句程序都有,最后保存到EXCEL表中,分为两个文件夹,一个是库函数文件,一个是主函数文件,最后还有一个已爬取成功的EXCEL表。

资源截图

代码片段和文件信息

# coding = utf-8
# 上行代码是为了在编写程序中可以打入中文汉字
import requests   # 引入系统或者第三方的模块
import sys
import re   # 正则表达式
from bs4 import BeautifulSoup     # 网页解析,获取数据,进行文字匹配,其实引用的是bs4里边一个模块
import urllib   # 制定URL,获取网页数据
import xlwt  # 进行excel操作
import sqlite3   # 进行SQL数据库操作
import urllib.request
def main():
    #  爬取网页,需要一个基本的URL
    baseurl = ‘https://movie.douban.com/top250?start=0‘
    datalist = getdata(baseurl)
    savepath = “豆瓣电影TOP250.xls“  # 定义保存路径在豆字前边不加.\\则表示保存在当前路径下
    savedata(datalistsavepath)    # 调用保存数据函数把datalist数据保存到savepath路径下
findlink = re.compile(r‘‘)   # 创建正则表达式对象,表示规则(字符串的模式)点号代表有一个字符,星号代表有无数个字符,问号代表这样的字符串出现0次到1次,字母r在这里表示对字符串中的特殊字符不做解析处理
filmname = re.compile(r‘tle“>(.*)‘)  # 创建正则表达式对象,影片的名字,其中r后边的span class 是查看网页上按f12查看网页源代码,发现电影名字两边代码是这个。
def getdata(baseurl):  # 获取数据,在括号内给该函数一个路径。
    “““爬取网页操作函数“““
    datalist = []  # 先定义列表
    for i in range(010):  # 因为要爬取10页的内容,所有askurl要使用10次
        url = baseurl + str(i*25)  # 每次要爬取的网页地址更新,每页有25条电影排行,所有乘以25,
        html = askurl(url)        # 调用每次更新后的网址,获取一页的html
        solvedata = BeautifulSoup(html“html.parser“)  # 逐一解析数据,要在for循环里,因为没爬取一个网页都要解析一次解析器是html.parser,解析对象是html
        for item in solvedata.find_all(‘div‘class_=“item“):     # 在解析后的数据solvedata里找到符合要求的字符
            data = []   # 保存一部电影的所有信息
            item = str(item)   # 把提取到的数据强制转换为字符串,方便后续处理
            link = re.findall(findlinkitem)[0]  # re库用来通过正则表达式 查找指定的字符串,中括号0表示只找第一个符合的字符串就可,findlink已在前边做了全局变量,为指定字符串的规则模式
            data.append(link)   # 前边定义了一个data空字典,此处使用append把查取到的电影连接追加进data字典中去
            name = re.findall(filmnameitem)[0]  # 查找到的电影名字给变量name因为该句程序是在已经找到的div,class=item标签数据中再次查找,所以此处中括号0表示是在一个div.class下的第一个符合的字符串
            data.append(name)   # 前边定义了一个data空字典,此处使用append把查取到的电影名字追加进data字典中去
            datalist.append(data)   # 把处理好的电影信息保存在data字典后,在追加到datalist中
    return datalist    # 返回一个数据列表,把网址里边的数据都给返回回来
def askurl(url):   # 得到指定一个url 的网页内容
    head = {“User-Agent“:“Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.6.4302.400“}   # 指定一个头部信息
    # 在网页中按F12,可以查到User-agent
    request = urllib.request.Request(urlheaders=head)  # 把传递数据的对象,和头部信息封装起来到request中
    html = ““
    try:
        response = urllib.request.urlopen(request)   # 发出请求了,返回一个response对象,这个对象里边有我们整个网页的信息
        html = response.read().decode(“utf-8“)  # 网页的信息读取出来,并decode进行解码
    except urllib.error.URLError as e:  # 整个try 和except是对该爬取网页程序做一个打包,如果爬取失败出现error,就打印输出相关的错误提示代码和错误原因
        if hasattr(e“code“):
            print(e.code)
        if hasattr(e“reason“):
            print(e.reason)
    return html  # 函数执行完,返回一个html,然后与getdata函数里的html = askurl(url),对获取的网页内容更新一次
def savedata(datalistsavepath):  # 括号内是保存路径
    “““保存数据函数“““
    ExcelFile = xlwt.Workbook(encoding=“utf-8“)
    ExcelBiao = ExcelFile.add_sheet(‘豆瓣电影TOP250‘)
    MeiLieName = (“电影链接““电影名字“)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-12-15 22:55  pa_chong\
     目录           0  2020-12-15 22:58  pa_chong\.idea\
     文件          50  2020-12-10 21:23  pa_chong\.idea\.gitignore
     文件           5  2020-12-15 22:55  pa_chong\.idea\.name
     目录           0  2020-12-10 21:23  pa_chong\.idea\inspectionProfiles\
     文件         174  2020-12-10 21:23  pa_chong\.idea\inspectionProfiles\profiles_settings.xml
     文件         727  2020-12-10 21:23  pa_chong\.idea\inspectionProfiles\Project_Default.xml
     文件         188  2020-12-10 21:23  pa_chong\.idea\misc.xml
     文件         275  2020-12-10 21:23  pa_chong\.idea\modules.xml
     文件         291  2020-12-10 21:23  pa_chong\.idea\pa_chong.iml
     文件        8178  2020-12-15 22:58  pa_chong\.idea\workspace.xml
     目录           0  2020-12-15 22:51  pa_chong\ku_han_shu\
     文件        5358  2020-12-15 22:51  pa_chong\ku_han_shu\p1.py
     目录           0  2020-12-15 22:42  pa_chong\ku_han_shu\__pycache__\
     文件        2168  2020-12-15 22:42  pa_chong\ku_han_shu\__pycache__\p1.cpython-38.pyc
     目录           0  2020-12-15 22:55  pa_chong\zhu_wen_jian\
     文件         634  2020-12-15 22:46  pa_chong\zhu_wen_jian\pa.py
     文件       55296  2020-12-15 22:54  pa_chong\豆瓣电影TOP250.xls

评论

共有 条评论