python爬取豆瓣Top250完整代码
python爬虫
# -*- coding = utf-8 -*-
# @Time : 2021/8/24 10:59
# @Author :
# @File : spider.py
# @Software : PyCharmfrom bs4 import BeautifulSoup # 网页解析,获取数据
import re # 正则表达式,进行文字匹配
import urllib.request, urllib.error # 制定URL,获取网页数据
import xlwt # 进行excel操作
import sqlite3 # 进行SQL数据库操作
import random
import requests
import time# 1.爬取网页
# 2.解析数据
# 3.保存数据def main():baseurl = "https://movie.douban.com/top250?start="# 1.爬取网页datalist = getData(baseurl)savepath = ".\\豆瓣电影Top250.xls"# 3.保存数据saveData(datalist,savepath)# askURL(baseurl)# 影片详情的链接
findLink = re.compile(r'<a href="(.*?)">') # re.compile()创建正则表达式对象(规则)
# 影片的图片的链接
findImgSrc = re.compile(r'<img.* src="(.*?)"', re.S)
# 影片的片名
findTitle = re.compile(r'<span class="title">(.*?)</span>')
# 影片的评分
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
# 影片的评价人数
findJudge = re.compile(r'<span>(\d*)人评价</span>')
# 找到概况
findInq = re.compile(r'<span class="inq">(.*)</span>')
# 找到影片的相关内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)# 爬取网页+逐一解析数据
def getData(baseurl):# 爬取10页的网页# https://movie.douban.com/top250?start=datalist = []for i in range(0, 10):time.sleep(2)url = baseurl + str(i * 25)html = askURL(url)# 2.逐一解析数据soup = BeautifulSoup(html, "html.parser")for item in soup.find_all('div', class_="item"): # 查找符合要求的字符串,形成列表# print(item) # 查看电影item的全部信息data = []item = str(item)link = re.findall(findLink, item)[0]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)data.append(rating)judge = re.findall(findJudge, item)data.append(judge)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('<br(\s+)?/>(\s+)?', " ", bd) # 去掉<br/>bd = re.sub('/', " ", bd) # 替换data.append(bd.strip()) # 去掉前后的空格datalist.append(data)print(datalist)return datalist# 得到指定一个URL的网页内容,在这里面进行封装成一个对象
def askURL(url):pro = ['122.152.196.126', '114.215.174.227', '119.185.30.75']head = {# User-Agent 之间不能存在空格 这一步是为了进行用户代理的封装(伪装成浏览器发送请求)"User-Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 92.0.4515.159Safari / 537.36"}# 这一步是为了将请求封装成一个对象# request = requests.get(url=url,proxies={'http':random.choice(pro)}, headers=head)request = urllib.request.Request(url=url, headers=head)# request.encoding = request.apparent_encoding# 为了之后进行保存爬取到底网页源码html = ""try:# 开始真正意义上的发送请求response = urllib.request.urlopen(request)# 显示网页源代码html = response.read().decode("utf-8")# print(html)except urllib.error.URLError as e:# 输出可能存在的错误信息# hasattr()是判断“”中的内容是否存在if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)return html# 保存数据
def saveData(datalist,savepath):print("save...")book = xlwt.Workbook(encoding='utf-8', style_compression=0) # 创建workbook对象sheet = book.add_sheet('豆瓣电影Top250', cell_overwrite_ok=True) # cell_overwrite_ok=True 表示允许覆盖,不写时,也是默认覆盖col = ("电影的详情链接", "图片链接", "影片中文名", "影片外文名", "评分", "评价数", "概述", "相关信息")for i in range(0, 8):sheet.write(0, i, col[i]) # 列名for i in range(0,250):print("第%d条"% (i+1))data = datalist[i]for j in range(0,8):sheet.write(i+1,j,data[j])book.save(savepath)if __name__ == "__main__":# 调用函数main()print("爬取完毕!!")
python爬取豆瓣Top250完整代码相关推荐
- Python爬取豆瓣Top250电影中2000年后上映的影片信息
Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...
- Python爬取豆瓣Top250电影可见资料并保存为excel形式
Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...
- 【爬虫】案例(爬取豆瓣top250)[完整+详细]
文章目录 1.需求 2.流程 3.实现 导包 主函数 数据获取 数据解析 存储到excel 简易数据库 存储到数据库 5.完整代码 6.小注 1.需求 爬取豆瓣top250的电影的播放链接,封面链接, ...
- python爬取豆瓣TOP250生成Excel表格例子最新
一 确定爬取网站 因为初学,所以按照网上的教程爬取豆瓣TOP250的网站.网址: https://movie.douban.com/top250 二 编写爬虫程序 详细过程就不再一 一讲解,可以看代码 ...
- python爬取豆瓣top250信息并存入数据库中 | sqlite3
文章目录 代码: 遇到的问题: 1.关于数据库表格中出现:NBSP 2. 为什么HTML字段中会出现&NBSP? 3.java.io.IOException: 不能删除数据库文件 4. 关于d ...
- 爬取豆瓣top250的代码
from bs4 import BeautifulSoup import re import urllib.request,urllib.error import xlwt import sqlite ...
- Python爬取豆瓣Top250的电影
流程图如下: 爬取网页-解析网页-存储数据到Excel和数据库中 源代码如下: 如果被豆瓣封Ip(一般被封第二天就解封了),可以自己设置代理Ip,或者自己登录账号后将Cookie放到header中. ...
- Python爬取豆瓣Top250电影排名
# -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...
- python爬取豆瓣TOP250电影
按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...
- python爬取wifi密码完整代码_python读取当前电脑的wifi密码
[实例简介] [实例截图] [核心代码] #coding:utf-8 import os import re import sys a=os.popen('netsh wlan show profil ...
最新文章
- opencv中image watch插件安装与使用教程
- R语言找到CRAN库已经不在提供的包、手动下载并使用RStudio进行安装
- 求补码表示为10000000的真值
- Linux C 程序的开发环境
- centos安装mysql密码_centos 安装mysql并设置密码
- java配置mongo最大连接数
- Puppet 的部署与应用,看这一篇就够了
- 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
- fiddler证书 iphone_【详细】Mac使用Fiddler实现IPhone抓包(支持https)
- oracle 二级排序,Oracle基础(二)之排序(order by)、限定查询(where)
- ise生成msk文件的用处_ISE中上载程序出错,msk文件缺失有关问题
- 15个网页数据采集中最常遇到的问题(干货)
- EXCEL里判断空值(有可能是函数返回的““),可用的3个函数counta() ,countblank() ,countif(),及语法注意点
- 数据科学 IPython 笔记本 四、Keras(下)
- 监督学习与无监督学习
- html5中的 hr定位,被大家遗忘的 hr 标签元素
- TOM企业邮箱,2021“重心出发”,聚焦企业邮箱安全办公!
- ubuntu shell命令划重点
- win7+opencv+V2015环境搭建
- java实现微博后台登录后台发送微博