本文属于学习笔记,所以很多具体的知识点并没有记录,如有需要可以留言。

1.爬虫初始

1.1什么是爬虫?
网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。
1.2爬虫可以做什么?
你可以爬取妹子的图片,爬取自己想看的视频等等,只要你能通过浏览器访问的数据都可以通过爬虫获取。
1.3爬虫的本质是什么?
模拟浏览器打开网页,获取网页中我们想要的那部分数据。

2.需求分析

爬取豆瓣电影Top250的基本信息,包括电影的名称、豆瓣评分、评价数、电影概况、电影链接。

3.基本流程

3.1获取数据,通过HTTP库向目标站点发起请求,请求可以包含额外的header等信息,如果服务器能正常响应,会得到一个Response,便是所要获取的页面内容。

3.2解析内容,得到内容可能是HTML,json等格式,可以用页面解析库、正则表达式等进行解析。

3.3保存数据,保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。

〇补充:
①获取页面数据,补充urllib模块

  • 用法讲解
    简单的一个get请求
import urllib.request
reponse = urllib.request.urlopen('http://www.baidu.com')
print(reponse.read().decode('utf-8'))

简单的一个post请求

import urllib.parse
import urllib.request
data = bytes(urllib.parse.urlencode({'hello':'world'}),encoding='utf-8')
reponse = urllib.request.urlopen('http://httpbin.org/post',data=data)
print(reponse.read())

由于使用urlopen无法传入很多我们需要参数,我们需要解决这个问题 我们需要声明一个request对象,通过这个对象来添加参数

import urllib.request
request = urllib.request.Request('https://python.org')
#由于urlopen无法传参数,声明一个Request对象
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

②解析内容,补充BeautifulSoup模块

  • 用法讲解

find_all(name, attrs, recursive, text, **kwargs)
1.name参数: 字符串过滤:会查找与字符串完全匹配的内容

 a_list = bs.find_all("a") print(a_list)

正则表达式过滤:如果传入的是正则表达式,那么BeautifulSoup4会通过search()来匹配内容

from bs4 import BeautifulSoup
import re
file = open('./aa.html', 'rb')
html = file.read()
bs = BeautifulSoup(html,"html.parser")
t_list = bs.find_all(re.compile("a"))
for item in t_list:
Print(item)

补充:re模块

正则表达式(规则表达式):事先定义好规则然后去过滤字符串


修饰符 描述
re.l 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

re模块下的函数

compile(pattern):创建模式对象 fifindall(pattern,string):列表形式返回匹配项 import re
print(re.findall( "a" , "ASDaDFGAa" ))
#[ a , a ] #列表形式返回匹配到的字符串
pat = re.compile( "a" )
print(pat.findall( "ASDaDFGAa" ))
#[ a , a ] #列表形式返回匹配到的字符串

4.保存数据

Excel表存储
〇补充xlwt模块
简单使用xlwt

import xlwt #导入模块
workbook = xlwt.Workbook(encoding='utf-8') #创建workbook 对象
worksheet = workbook.add_sheet('sheet1') #创建工作表sheet
worksheet.write(0, 0, 'hello') #往表中写内容,第一各参数 行,第二个参数列,第三个参数内容
workbook.save('students.xls') #保存表为students.xls

数据库保存
待。。。

5.完整代码

from bs4 import BeautifulSoup  # 网页解析,获取数据
import re  # 正则表达式,进行文字匹配
import urllib.request, urllib.error  # 制定URL,获取网页数据
import xlwt  # 进行excel操作def main():baseurl = "https://movie.douban.com/top250?start="# 1.爬取网页datalist = getData(baseurl)savepath = "豆瓣电影Top250.xls"# 3.保存数据saveData(datalist,savepath)# 影片详情链接的规则
findLink = re.compile(r'<a href="(.*?)">')  # 创建正则表达式对象,表示规则(字符串的模式)
# 影片图片
findImgSrc = re.compile(r'<img.*src="(.*?)"', re.S)  # 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):datalist = []for i in range(0, 10):  # 调用获取页面信息的函数,10次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]  # 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('<br(\s+)?/>(\s+)?', " ", bd)  # 去掉<br/>bd = re.sub('/', " ", bd)  # 替换/data.append(bd.strip())  # 去掉前后的空格datalist.append(data)  # 把处理好的一部电影信息放入datalistreturn datalist# 得到指定一个URL的网页内容
def askURL(url):head = {  # 模拟浏览器头部信息,向豆瓣服务器发送消息"User-Agent": "Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.122  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):print("save....")book = xlwt.Workbook(encoding="utf-8", style_compression=0)  # 创建workbook对象sheet = book.add_sheet('豆瓣电影Top250', 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

    Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...

  2. Python爬虫爬取豆瓣电影Top250

    爬虫爬取豆瓣Top250 文章目录 爬虫爬取豆瓣Top250 完整代码 第一步获取整个网页并以html来解析 正则表达式来匹配关键词 所有信息写入列表中 存入Excel中 效果如图 本文学习自B站UP ...

  3. python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

  4. python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中

    我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...

  5. Python爬虫爬取豆瓣电影评论内容,评论时间和评论人

    Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...

  6. python爬虫爬取豆瓣读书Top250

    python爬虫爬取豆瓣读书Top250 话不多说,直接上代码! from urllib.request import urlopen, Request from bs4 import Beautif ...

  7. python爬取豆瓣电影top250_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

  8. python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格

    豆瓣是一个社区网站,创立于2005年3月6日.该网站以书影音起家,提供关于书籍,电影,音乐等作品信息,其描述和评论都是由用户提供的,是Web2.0网站中具有特色的一个网站. 豆瓣电影top250网址: ...

  9. python豆瓣电影top250爬虫课程设计_[教程]图文:爬虫爬取豆瓣电影top250

    window环境下 使用python脚本爬取豆瓣 环境安装 python python开发环境 jupyter python web IDE requests python requests模块用于向 ...

  10. python爬虫爬取豆瓣电影信息城市_python爬虫,爬取豆瓣电影信息

    hhhhh开心,搞了一整天,查了不少python基础资料,终于完成了第一个最简单的爬虫:爬取了豆瓣top250电影的名字.评分.评分人数以及短评. 代码实现如下:#第一个最简单的爬虫 #爬取了豆瓣to ...

最新文章

  1. 请问,关闭子窗口提示错误,大家遇到这样的问题吗?
  2. 又见yx — 说说IT公司的团队头儿
  3. 2021全州高中高考成绩查询,最新!最全!桂林各中学高考成绩汇总!为桂林考生骄傲!...
  4. eventbus使用_Android EventBus框架的使用介绍
  5. 16.枚举中的option和result.rs
  6. 自动取款机如何使用无卡取款_云南铝管自动抛光机如何使用_利琦抛光机械
  7. 【LeetCode笔记】27. 移除元素(Java、原地)
  8. 2016杭州ccpc
  9. 【操作系统】请求调页
  10. java 奇数 字符乱码_socket中文奇数个出现乱码的解决办法
  11. 超8千Star,火遍Github的Python反直觉案例集!
  12. 高二会考计算机应用试题,高中信息技术会考25套操作题整理.doc
  13. Qt_MinGW编译二维码生成库Zint及使用
  14. 兔子数列规律怎么讲_兔子繁殖问题带来的智商碾压:斐波那契数列趣谈
  15. 期货用期权对冲(期货用期权对冲吗)
  16. [分享]我们团队管理的最佳实践——企业积分制度应该如何建立?
  17. USYD悉尼大学DATA 2002 【R语言学习1】【介绍R】Introduction to R「虽迟但到」
  18. matlab创作歌曲——《月半小夜曲》
  19. HelloWorld是如何在计算机里跑起来的?
  20. kal8linux密码,KAL1 LINUX 官方文档之arm上的ka1i---树莓派全盘加密

热门文章

  1. bin文件python读取
  2. Uniapp微信雪糕刺客单页小程序源码
  3. 38译码器数码管c语言代码,51单片机38译码器实现动态数码管控制
  4. 企业固定资产管理存在的问题及改进建议
  5. 美国免费为全世界提供GPS服务,为什么中国还要搞“北斗”?
  6. 电力系统分析—潮流计算代码Python编程练习(基于极坐标形式的常规牛拉法)
  7. 计算机图形学概论论文5000字,关于计算机图形学探究的论文
  8. ADSL防御黑客攻击的十大方法(转)
  9. PCBA加工为什么要做首件检测?
  10. jdk中运行java程序的工具,采用JDK工具编译运行java程序