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完整代码相关推荐

  1. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  2. Python爬取豆瓣Top250电影可见资料并保存为excel形式

    Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...

  3. 【爬虫】案例(爬取豆瓣top250)[完整+详细]

    文章目录 1.需求 2.流程 3.实现 导包 主函数 数据获取 数据解析 存储到excel 简易数据库 存储到数据库 5.完整代码 6.小注 1.需求 爬取豆瓣top250的电影的播放链接,封面链接, ...

  4. python爬取豆瓣TOP250生成Excel表格例子最新

    一 确定爬取网站 因为初学,所以按照网上的教程爬取豆瓣TOP250的网站.网址: https://movie.douban.com/top250 二 编写爬虫程序 详细过程就不再一 一讲解,可以看代码 ...

  5. python爬取豆瓣top250信息并存入数据库中 | sqlite3

    文章目录 代码: 遇到的问题: 1.关于数据库表格中出现:NBSP 2. 为什么HTML字段中会出现&NBSP? 3.java.io.IOException: 不能删除数据库文件 4. 关于d ...

  6. 爬取豆瓣top250的代码

    from bs4 import BeautifulSoup import re import urllib.request,urllib.error import xlwt import sqlite ...

  7. Python爬取豆瓣Top250的电影

    流程图如下: 爬取网页-解析网页-存储数据到Excel和数据库中 源代码如下: 如果被豆瓣封Ip(一般被封第二天就解封了),可以自己设置代理Ip,或者自己登录账号后将Cookie放到header中. ...

  8. Python爬取豆瓣Top250电影排名

    # -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...

  9. python爬取豆瓣TOP250电影

    按照小甲鱼的爬虫教程,再自己修改了一部分. 废话不多说,直接贴代码 import requests from bs4 import BeautifulSoup import redef open_ur ...

  10. python爬取wifi密码完整代码_python读取当前电脑的wifi密码

    [实例简介] [实例截图] [核心代码] #coding:utf-8 import os import re import sys a=os.popen('netsh wlan show profil ...

最新文章

  1. opencv中image watch插件安装与使用教程
  2. R语言找到CRAN库已经不在提供的包、手动下载并使用RStudio进行安装
  3. 求补码表示为10000000的真值
  4. Linux C 程序的开发环境
  5. centos安装mysql密码_centos 安装mysql并设置密码
  6. java配置mongo最大连接数
  7. Puppet 的部署与应用,看这一篇就够了
  8. 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
  9. fiddler证书 iphone_【详细】Mac使用Fiddler实现IPhone抓包(支持https)
  10. oracle 二级排序,Oracle基础(二)之排序(order by)、限定查询(where)
  11. ise生成msk文件的用处_ISE中上载程序出错,msk文件缺失有关问题
  12. 15个网页数据采集中最常遇到的问题(干货)
  13. EXCEL里判断空值(有可能是函数返回的““),可用的3个函数counta() ,countblank() ,countif(),及语法注意点
  14. 数据科学 IPython 笔记本 四、Keras(下)
  15. 监督学习与无监督学习
  16. html5中的 hr定位,被大家遗忘的 hr 标签元素
  17. TOM企业邮箱,2021“重心出发”,聚焦企业邮箱安全办公!
  18. ubuntu shell命令划重点
  19. win7+opencv+V2015环境搭建
  20. java实现微博后台登录后台发送微博

热门文章

  1. c++语言杨辉三角,杨辉三角 (C++代码)
  2. 新零售O2O商城系统要怎么开发,这些功能都要有
  3. 银行对公业务的发展方向,及多银行资金管理云服务的探索
  4. 英语四六级网站服务器繁忙,英语四六级成绩公布这些问题很常见
  5. CDOJ 1131 男神的礼物 区间dp
  6. 十大经典排序算法(动图演示)
  7. Java中的23个设计模式 【结构型模式】 中的 【装饰模式】
  8. 【图像算法朝圣之路二】虹膜识别1(K-means算法)
  9. Google reCaptcha验证码无法显示解决方案
  10. 米家扫地机器人尘盒怎么取_米家扫地机器人怎么清理灰尘盒