本文的代码是基于Python的爬虫练手,爬取豆瓣电影top250的信息
配套视频:爬虫视频


先贴一张爬虫结果图:


预备知识

  1. 浏览器访问网址的步骤是:1)用户发送一个url链接访问请求;2)服务器根据请求返回特定的响应;3)浏览器解析返回的响应(HTML),获取目标信息等展示出来。
  2. 爬虫的目的就是在3)步时,不全部解析出来,而是只取自己需要的部分保存下来。所以爬虫的整体流程分3步
  • 发送url,获取响应数据(html)
  • 解析数据
  • 保存结果

1. 发送url,获取响应

使用urllib包
参考:urllib讲解视频

# 得到一个url的指定内容
def askURL(url):# 用户代理,模拟浏览器头部信息,向豆瓣服务器发消息head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"}# 发送url请求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

2. 解析数据

使用BeautifulSoup包
BeautifulSoup讲解视频
正则表达式、正则提取


# 正则表达式用来获得爬虫指定信息
findLink = re.compile(r'<a href="(.*?)">')      # 找链接的pattern
findImg = 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)# 根据url,获得指定信息
def getData(baseurl):datalist = []for i in range(0, 1):url = baseurl + str(i*25)html = askURL(url)          # 保存html源码# 2.解析数据soup = BeautifulSoup(html, "html.parser")for item in soup.find_all('div', class_="item"):# print(item)data = []item = str(item)# 使用正则表达式解析数据link = re.findall(findLink, item)[0]data.append(link)imgSrc = re.findall(findImg, item)[0]data.append(imgSrc)titles = re.findall(findTitle, item)if(len(titles) == 2):ctitile = titles[0]otitile = titles[1]data.append(ctitile)data.append(otitile)else:ctitile = titles[0]otitile = ""data.append(ctitile)data.append(otitile)rating = re.findall(findRating, item)[0]data.append(rating)judgeNum = re.findall(findJudge, item)[0]data.append(judgeNum)inq = re.findall(findInq, item)[0]if len(inq) != 0:inq = inq.replace("。", "")data.append(inq)else:data.append(" ")bd = re.findall(findBd, item)[0]bd = re.sub('<br(\s+)?/>(\s+)?', " ", bd)bd = re.sub('/', "", bd)data.append(bd.strip())datalist.append(data)return datalist

3. 保存数据

两种格式,一种xml格式,使用xlwt包;一种db格式,使用sqlite3包
xml视频讲解、sqlite视频讲解

#  保存成xml格式
def saveData(datalist, savepath):print("save...")# 创建一个xml对象book = xlwt.Workbook(encoding="utf-8", style_compression=0)# 插入页签sheet = book.add_sheet("豆瓣top250")cols = ("电影详情链接", "图片链接", "影片中文名", "外国名", "评分", "评价数","概况","相关信息")# 写入内容for i in range(8):sheet.write(0, i, cols[i])for i in range(len(datalist)):print("第{0}条".format(i+1))for j in range(0, 8):sheet.write(i+1, j, datalist[i][j])book.save(savepath)#  保存成数据库(db)格式
def saveDataDB(datalist, savepathdb):# 初始化数据库,创建表init_db(savepathdb)# 连接数据库conn = sqlite3.connect(savepathdb)# 创建游标c = conn.cursor()# 编写sql语句sql = ""for data in datalist:for idx in range(len(data)):if idx is 4 or idx is 5:continuedata[idx] = '"' + data[idx] + '"'sql = '''insert into movie250 (info_link, pic_link, cname, ename, score, rated, instroduction, infor) values(%s)'''%",".join(data)print(sql)# 执行sql语句c.execute(sql)# 提交数据库操作conn.commit()# 关闭数据库c.close()# 初始化数据库
def init_db(savepathdb):conn = sqlite3.connect(savepathdb)c = conn.cursor()sql = '''create table movie250(id integer primary key autoincrement,info_link text,pic_link text,cname varchar,ename varchar,score numeric,rated numeric,instroduction text,infor text)'''c.execute(sql)conn.commit()conn.close()

有需要代码的小伙伴可以留下邮箱~

项目之爬虫入门(豆瓣TOP250)相关推荐

  1. Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子

    问题 本文是对<Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?> 一文的补充 我们以<追风少年>为例 用chrome的developer tool查看源 ...

  2. 爬虫入门——电影top250爬取

    爬虫入门(自用) 第一篇 Python 爬虫入门之 电影top250爬取 文章目录 爬虫入门(自用) 前言 一.前置知识 requests库 正则表达式(re库) 二.使用步骤 1.引入库 2.小试牛 ...

  3. 爬虫-关于豆瓣top250的数据可视化

    目的:该文章的目的是对豆瓣TOP250网页的爬虫就行可视化分析. 明确目标,导入所需库 使用flask库建立网络框架 完成每个网页的内容 豆瓣电影评分top250:豆瓣电影 Top 250 (doub ...

  4. Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?

    [CSDN 编者按]程序员刷豆瓣也要刷出技术感,本文爬取豆瓣 TOP250 告诉你这些书"热门"在哪里!案例分析之外,重在梳理编写爬虫的逻辑和链路关键点,手把手教你形成自己编写爬虫 ...

  5. Python爬虫之豆瓣TOP250爬取

    文章目录 1.分析网页 1.1为什么要分析网页 1.2如何分析网页 1.3打开编辑环境 1.4生成链接 2.请求网页 2.1导入包 2.2设置浏览器代理 2.3请求服务器 2.4请求服务器代码汇总 3 ...

  6. python——爬虫(豆瓣top250)

    一.抓取豆瓣top250网页数据 import urllib.request as urlrequest from bs4 import BeautifulSouptop250_url = " ...

  7. 爬虫学习--豆瓣top250

    最近在学习爬虫技术,在网上找了一些资料,也找到了一些例子,但找到的例子是基于python2的所以就改成了python3的,而且加了一个将电影的评分也打印出来的语句,话不多说,上代码: #!/usr/b ...

  8. Python爬虫实战----------豆瓣TOP250

    *前段时间学习了一些浅显的爬虫知识,防止遗忘写个博客记录一下,如果能帮到其他人是更好的 本篇介绍一下如何一步一步实现使用python爬取豆瓣电影TOP250,博主是个小白,如果内容有误,请将宝贵的建议 ...

  9. python爬虫多线程下载_Python爬虫之多线程下载豆瓣Top250电影图片

    爬虫项目介绍 本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示: 本次爬虫项目将分别不使用多线程和使用多线程 ...

最新文章

  1. 期末考试中微积分的证明题的分析:Taylor级数展开
  2. Vivado各个过程产生的文件与ISE的对比
  3. ztree.js的使用整理
  4. curl 忽略证书访问 https
  5. 7.Linux 输入子系统分析
  6. 爬虫的基本知识第一个请求requests模块的基本使用
  7. Spring启动和缓存抽象
  8. 鲲鹏920 centos7 postgresql12 postgis2.5.4编译
  9. 四大利器帮你走出IT运维管理的困境
  10. 使用abd工具查看安卓设备cpu处理器是32位或64位
  11. 炼油厂将abc三种原油 matlab求解,某工厂制造三种产品A、B和C需要两种资源(劳动力和原材料),目标是要确定总利润最大的最优生产计划。列出的线性...
  12. [ctf.show.reverse] 红包六
  13. 数据库实验六:完整性语言实验
  14. 如何从CA获取数字证书
  15. 第41部分-Linux x86 64位汇编MMX使用
  16. Databricks 第1篇:初识Databricks,创建工作区、集群和Notebook
  17. mysql聚合函数查询,子查询,关联查询
  18. finereport自学教程_办公物语丨Finereport零基础入门教程,你不可缺少的报表神器...
  19. 怎么连接到局域网内的另一台电脑
  20. 网络经济与企业管理【九】之企业知识管理

热门文章

  1. qt编写的android程序在android系统中运行,中文显示乱码的解决方法
  2. ASP.NET中插入Flash
  3. 【Java从0到架构师】SpringBoot - SpringMVC
  4. 网络协议从入门到底层原理(3)网络互联模型、物理层、数据链路层(CSMA/CD协议、Ethernet V2帧、PPP协议)
  5. 小程序入门学习19--springboot之HelloWorld
  6. python 实现的键盘记录器 小功能
  7. python阅读wtfbook疑问和验证
  8. 解决方案大全ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory
  9. 读书笔记_打开量化投资的黑箱10
  10. 离职潮来袭,但为什么HR还是很难招到人?