第一个Python爬虫项目 ,爬取豆瓣top250中影片信息

第一个Python爬虫项目 , 将爬取到的信息存到Excel表格中

#-*- codeing = utf-8 -*-
#@Time : 2020-07-17 19:27
#@Author : 姚云峰
#@File : demo1.py
#@Software : PyCharm

from bs4 import BeautifulSoup  # 网页解析 , 获取去数据
import re  # 正则表达式进行文字匹配
import urllib.request,urllib.error # 制定url获取网页数据
import xlwt # 进行excel操作
import sqlite3 #进行sqllite数据库操作

# 主方法
def main():
    baseUrl = "https://movie.douban.com/top250?start="
    # 爬取网页
    datalist = getData(baseUrl)

    # 保存路径
    savePath = "./豆瓣电影Top.xls"
    # 保存数据
    saveData(datalist , savePath)


    # askURL("https://movie.douban.com/top250?start=0")

# 获取影片链接的规则
findLink = re.compile(r'')  # 创建正则表达式对象 , 标识规则(字符串模式)
# 影片图片的链接
findImgSrc = re.compile(r' , re.S)  # re.S 让换行符包含在字符中
# 影片片名
findTitle = re.compile(r'(.*?)')
# 影片的评分
findRating = re.compile(r'(.*?)')
# 找到评价人数
findJudge = re.compile(r'(\d*)人评价')
# 找到概况
findInq = re.compile(r'(.*?)')
# 找到影片的相关内容
findBd = re.compile(r'

(.*?)

'
, re.S) # 爬取网页 def getData(baseUrl): datalist = [] for i in range(0 , 10): # 调用获取页面信息的函数 10 次 url = baseUrl + str(i*25) html = askURL(url) # 保存获取到的网页源码 # 逐一解析数据 soup = BeautifulSoup(html,"html.parser") for item in soup.find_all("div",class_="item"): # 查找符合要求的字符串形成列表 # print(item) #测试:查看item电影全部信息 # break data = [] # 保存一步电影的全部信息 item = str(item) # 获取影片详情链接 link = re.findall(findLink , item)[0] # re库用来查找 , 通过正则表达式查找指定的字符串 data.append(link) # 添加链接 imgSrc = re.findall(findImgSrc , item)[0] data.append(imgSrc) # 添加图片 titles = re.findall(findTitle , item) if(len(titles) == 2): ctitle = titles[0] data.append(ctitle) # 添加中文名 otitle = titles[1].replace("/","") # 去掉无关的符号 data.append(otitle) # 添加外国名 else: data.append(titles[0]) data.append(' ') # 外国名字留空 rating = re.findall(findRating , item)[0] data.append(rating) # 添加评分 judgeNum = re.findall(findJudge , item)[0] data.append(judgeNum) # 添加评价人数 inq = re.findall(findInq , item) if len(inq) != 0: inq = inq[0].replace("。" , "") # 去掉句号 data.append(inq) # 添加概述 else: data.append(" ") # 留空 bd = re.findall(findBd , item)[0] bd = re.sub('(\s+)?' , " " , bd) # 去掉
bd = re.sub('/' , " " , bd) data.append(bd.strip()) # 去掉前后的空格 datalist.append(data) # 把处理好的一步电影信息放入datalist # print(datalist) return datalist # 得到指定一个url的网页内容 def askURL(url): head = { # 模拟浏览器头部信息 , 想豆瓣服务器发送消息 "User-Agent":"Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/81.0.4044.129 Safari/537.36" } # 用户代理标识告诉豆瓣服务器我们是什么类型的机器 浏览器(本质上是告诉浏览器 , 我们可以接受什么水平的文件内容) request = urllib.request.Request(url,headers=head) html = "" try: response = urllib.request.urlopen(request) html = response.read().decode("utf-8") # print(html) except urllib.error.URLError as e: if hasattr(e , "code"): print(e.code) if hasattr(e , "reason"): print(e.reason) return html def saveData(datalist , savePath): # 保存数据 workbook = xlwt.Workbook(encoding="utf-8" , style_compression=0) # 创建workbook对象 worksheet = workbook.add_sheet('豆瓣电影top250' , cell_overwrite_ok=True) # 创建工作表 col = ('电影详情链接' , "图片链接" , "影片中文名" , "影片外国名" , "评分" , "评价数" , "概况" , "相关信息") for i in range(0 , 8): worksheet.write(0 , i , col[i]) # 列名 for i in range(0 , 250): print(f'第{i+1}条') data = datalist[i] for j in range(0 , 8): worksheet.write(i+1 , j , data[j]) workbook.save(savePath) if __name__ == "__main__": #当程序执行时 # 调用函数 main() print("爬取完毕")

第一个Python爬虫项目 ,爬取豆瓣top250中影片信息_第1张图片

你可能感兴趣的:(第一个Python爬虫项目 ,爬取豆瓣top250中影片信息)