【Python爬虫】爬取豆瓣电影Top 250
豆瓣电影 Top 250
导入第三方包
urllib模块介绍
引入模块
import urllib.request,urllib.parse,urllib.error
获取一个get请求
respose = urllib.request.urlopen("http://www.baidu.com")
print(respose.read().decode('utf-8')) #对获取的网页进行解码
获取一个post请求
data = bytes(urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")#转化成二进制
respose = urllib.request.urlopen("http://httpbin.org/post",data=data)
print(respose.read().decode('utf-8'))
异常处理
异常处理try:respose = urllib.request.urlopen("http://httpbin.org/post",timeout=0.01)print(respose.read().decode('utf-8'))except urllib.error.URLError as e:print("time out!")
获取响应头
respose = urllib.request.urlopen("https://www.baidu.com/")
print(respose.status)
print(respose.getheaders())
封装请求对象
import urllib.request,urllib.parse,urllib.errorif __name__ == '__main__':url = "http://httpbin.org/post"data = bytes(urllib.parse.urlencode({'name':'eric'}),encoding="utf-8")headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",}req = urllib.request.Request(url=url,data=data,headers=headers,method="POST")respose = urllib.request.urlopen(req)print(respose.read().decode("utf-8"))
访问豆瓣
import urllib.request,urllib.parse,urllib.errorif __name__ == '__main__':url = "https://www.douban.com/"data = bytes(urllib.parse.urlencode({'name':'eric'}),encoding="utf-8")headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36",}req = urllib.request.Request(url=url,data=data,headers=headers)respose = urllib.request.urlopen(req)print(respose.read().decode("utf-8"))
BeautifulSoup模块介绍
作用:解析html文件
创建html文件
<! DOCTYPE html><html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type">
<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
<meta content="always" name="referrer"/>
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css">
<title>百度一下你就知道</title>
</head>
<body link="#0000cc"><div id="wrapper"><div id="head"><div class="head_wrapper"><div id="u1"><a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a><a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a><a class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a><a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a><a class="mnav" href="http://tieba.baidu.com" name="tj_trtieba">贴吧</a><a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a></div></div></div></div>
</body>
from bs4 import BeautifulSoupif __name__ == '__main__':file = open("show.html","rb")html = file.read()bs = BeautifulSoup(html,"html.parser") #解析html文件#Tag 标签及其内容:拿到第一个标签print(type(bs.head))#获取标签里的内容print(bs.title.string)#获取标签里所有的属性:属性值print(bs.a.attrs)#文档的遍历print(bs.head.contents[1])
文档搜索
from bs4 import BeautifulSoup
import reif __name__ == '__main__':file = open("show.html","rb")html = file.read()bs = BeautifulSoup(html,"html.parser") #解析html文件#文档搜索
#字符串过滤:会查找与字符串完全匹配的内容t_list = bs.find_all("a")for l in t_list:print(l)#正则表达式过滤t_list = bs.find_all(re.compile("a"))for l in t_list:print(l)#筛选出有name属性的标签def name_is_exists(tag):return tag.has_attr("name")t_list = bs.find_all(name_is_exists)for l in t_list:print(l)t_list = bs.find_all(id="head")t_list = bs.find_all(class_=True)for l in t_list:print(l)#text参数t_list = bs.find_all(text="hao123")t_list = bs.find_all(text=["hao123","地图","贴吧"])t_list = bs.find_all(text = re.compile("\d"))for l in t_list:print(l)#limit参数t_list = bs.find_all("a",limit=3)for l in t_list:print(l)#css选择器t_list = bs.select('title')t_list = bs.select('.mnav') #class值 = mnavt_list = bs.select("#u1") #根据id查找t_list = bs.select("a[class='bri']")t_list = bs.select("head > title")for l in t_list:print(l)
正则表达式
import re
if __name__ == '__main__':# pattern = re.compile("AA") #此处的AA是正则表达式# matcher = pattern.search("ACBAANMCDEAAAA") #search方法进行比对查找# print(matcher)# m = re.search("asd","Aasd") #第一个是模板、第二个是要校验的对象# print(m)# print(re.findall("[A-Z]+","ASDaDFGAa"))# print(re.sub("a","A","abcdasd")) #找到a用A替换str = "\nabd-\'"print(str)str = r"\nabd-\'" #在字符串前面加r,不用再考虑转义字符print(str)
保存数据
import xlwtif __name__ == '__main__':workbook = xlwt.Workbook(encoding="utf-8")worksheet = workbook.add_sheet("sheet1",cell_overwrite_ok=True) #创建工作表for index,item in enumerate(col):worksheet.write(0,index,item)workbook.save('student.xls')
from bs4 import BeautifulSoup #网页解析、获取数据
import re #正则表达式,进行文字匹配
import urllib.request,urllib.error #制定URL,获取网页数据
import xlwt #进行excel操作# 爬取网页
# 解析数据
# 保存数据#爬取网页
def getData(baseurl):dataList = []for i in range(1):url = baseurl + str(i * 25)html = askURL(url)soup = BeautifulSoup(html,"html.parser")for item in soup.find_all("div",class_="item"):print(item)return dataList# 保存数据
def saveData(Path):print(Path)def askURL(url):request_headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36"}request = urllib.request.Request(url,headers=request_headers)try:respose = urllib.request.urlopen(request)html = respose.read().decode("utf-8")except urllib.error.URLError as e:if hasattr(e,"code"):print(e.code)if hasattr(e,"reason"):print(e.reason)return htmlif __name__ == '__main__':baseurl = "https://movie.douban.com/top250?start="getData(baseurl)Path = ".\\豆瓣电影Top250.xls"saveData(Path)
抓取网易云音乐的评论
API
https://music.163.com/#/user?id=用户id
https://music.163.com/#/playlist?id=歌单id
【Python爬虫】爬取豆瓣电影Top 250相关推荐
- Python爬虫 爬取豆瓣电影TOP250
Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...
- python爬虫爬取豆瓣电影排行榜并通过pandas保存到Excel文件当中
我们的需求是利用python爬虫爬取豆瓣电影排行榜数据,并将数据通过pandas保存到Excel文件当中(步骤详细) 我们用到的第三方库如下所示: import requests import pan ...
- Python爬虫爬取豆瓣电影评论内容,评论时间和评论人
Python爬虫爬取豆瓣电影评论内容,评论时间和评论人 我们可以看到影评比较长,需要展开才能完整显示.但是在网页源码中是没有显示完整影评的.所以我们考虑到这部分应该是异步加载的方式显示.所以打开网页的 ...
- python xpath爬取豆瓣图书Top 250存入csv文件并解决csv乱码问题
我上次分享过关于爬取豆瓣电影top250的实战:BeautifulSoup爬取豆瓣电影top250信息 和 python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格 , ...
- 使用Python爬取豆瓣电影 Top 250
目录 前言 一.大致思路 1.导入第三方库 2.简单需求分析 二.代码解析 三.代码实现 四.总结一下 实现Python爬虫的基本思路: 1. 确定需求 2. 网站分析 3. 单一数据提取 4. 提取 ...
- python爬虫爬取豆瓣电影信息城市_Python爬虫入门 | 2 爬取豆瓣电影信息
这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源.看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬 ...
- Python爬虫爬取豆瓣电影Top250
爬虫爬取豆瓣Top250 文章目录 爬虫爬取豆瓣Top250 完整代码 第一步获取整个网页并以html来解析 正则表达式来匹配关键词 所有信息写入列表中 存入Excel中 效果如图 本文学习自B站UP ...
- 用Python爬虫爬取豆瓣电影、读书Top250并排序
更新:已更新豆瓣电影Top250的脚本及网站 概述 经常用豆瓣读书的童鞋应该知道,豆瓣Top250用的是综合排序,除用户评分之外还考虑了很多比如是否畅销.点击量等等,这也就导致了一些近年来评分不高的畅 ...
- 爬取豆瓣电影Top 250的海报图片以及相关信息
该项目大致分为以下步骤: 使用 requests库 获取页面 使用 lxml库 和 XPath 解析页面 爬取电影海报图片 使用 pandas库 将电影的相关信息存储为csv文件 添加循环,保存所有图 ...
最新文章
- HDU2853(最大权完美匹配)
- 再谈select, iocp, epoll,kqueue及各种I/O复用机制 - Shallway - 博客频道 - CSDN.NET
- 运维基础(3)备份篇
- 2440 休眠唤醒的实现过程(作者:wogoyixikexie@gliet)
- Boost:boost::asio模块的allocation service分配服务测试程序
- RAC环境在ASM上创建表空间出错ORA-569
- 调试九法:软硬件错误的排查之道书评
- linux下怎么退出telnet
- spring学习(14):Autowired的使用场景
- 网络资产管理系统_固定资产管理系统的常用操作
- 当类的泛型相关时,如何在两个泛型类之间创建类似子类型的关系呢
- Python实现视频语音和字幕自动审查功能
- SpringSecurity AbstractAuthenticationProcessingFilter
- C# ?? 操作符示例
- Quick Switch Virtual Desktop[AutoHotkey]
- Ubuntu 16.04 安装Matlab R2015b
- PHP集成腾讯云短信SDK
- android半透明引导页
- 短视频源码APP开发,短视频的功能
- 【移动端网页布局】移动端网页布局基础概念 ① ( 移动端浏览器 | 移动端屏幕分辨率 | 移动端网页调试方法 )
热门文章
- 007数据分析能力:业务题
- Android Studio修改工程项目名称以及修改包名
- source and destination ports as seperate columns in wireshark
- 理工附中2021年高考成绩查询,2021年江苏理工学院录取结果查询,附查询网址入口...
- 《亚马逊云科技-游戏孵化营》第一次公开课学习心得
- table表格表头单元格添加斜线
- [博学谷学习记录]超强总结,用心分享|第07节 常用的API-----笔记篇
- 箴言:统计学的智慧七柱
- 千锋Django学习笔记
- 马赛克效果,通过PS把迪丽热巴制作成马赛克效果