《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)
全球电影票房排行榜也是一个经常被用来讲网络爬虫的实例。我们同样用中国大学排名的代码,修改一下来爬取相应内容。
打开网页链接:http://www.piaofang.biz/,先来观察页面结构:
下面我们再来分析网页源代码:
1、网页中有"body"和"table"标签,没有"tbody"标签 。
2、有一个包含“排名”、“电影名”等六项内容的表头的“tr"子标签。
3、相比第2名,在第1名的子标签内,第1名前多了“全球电影票房排行榜”几个字。11名、21名好像也是一样。
4、阿凡达前也是有一个“a"标签。
5、 第10名和11名之间有一行空行。
解决思路:
1、对于空行问题。 增加一个if语句,判断列表长度是否为6。
2、表头和内容标签层级数不同,用“ulist.append()”时会出错,可以用“try-except"语句来解决。
3、第1名及第11名前的“全球电影票房排行榜”,用strip()来解决。
修改后的代码如下:
import requests
import bs4
from bs4 import BeautifulSoupdef getHTML_Text(url):try:kv = {'User-Agent':'Mozilla/5.0'}r = requests.get(url,timeout = 20 ,headers = kv)r.raise_for_status()# print('是否=200',r.status_code) #如果状态不是200,则产生网络访问异常r.encoding = r.apparent_encoding# print(r.request.headers) # 如不能正常访问网络,可参考其中内容修改kv中的信息。return r.textexcept:return '网络打开异常!'def fillList(ulist,html):soup = BeautifulSoup(html,'html.parser')for tr in soup.find('table').children: # 网页上没有‘tbody’标签,用‘body’也不能成功。if isinstance(tr,bs4.element.Tag):tds = tr('td')# print('tds=', tds)if len(tds)>=6: # 去掉空列表,以防出错“list index out of range”try:ulist.append([tds[0].text.strip('全球电影票房排行榜'),tds[1]('a')[0].string,tds[2].string,tds[3].string,tds[4].string,tds[5].text])# strip('全球电影票房排行榜')用于删除第一名的前缀,用text代替string,防止下行出现“unsupported format string passed to NoneType.__format__”except:ulist.append([tds[0].string, tds[1].string, tds[2].string, tds[3].string, tds[4].string,tds[5].string]) # 提取标题else:pass# print(ulist)def print_all_result(ulist,num):tplt = "{0:>6}\t{1:{6}^18}\t\t{2:^6}\t{3:{6}^6}\t{4:{6}^16}\t{5:{6}>8}"for i in range(num):u = ulist[i]print(tplt.format(u[0].strip(),u[1].strip(),u[2].strip(),u[3].strip(),u[4].strip(),u[5].strip(),chr(12288)))def main():url = 'http://www.piaofang.biz/'html = getHTML_Text(url)result = []fillList(result,html)print_all_result(result,21)if __name__ == '__main__':main()
运行结果如下:
《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)相关推荐
- Python网络爬虫与信息提取笔记(续篇)(文末附教学视频)只供教学讲解,请勿对有robots协议的网站(如淘宝网)造成骚扰
接上篇博客:Python网络爬虫与信息提取笔记(文末附教学视频) 14:基于bs4库的HTML内容遍历方法 标签树的下行遍历: 用len(soup.body.contents)返回body标签的儿子节 ...
- python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...
- Python网络爬虫与信息提取(17)—— 题库爬取与整理+下载答案
前言 上一节实现了题目的整理,没整理答案是不完整的,所以这一节加上答案的爬取. 上一节地址:Python网络爬虫与信息提取(16)-- 题库爬取与整理 效果 思路 爬答案有点难搞,像这种题库的答案都是 ...
- Python网络爬虫与信息提取(中国大学mooc)
目录 目录 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 目标获取淘宝搜索页面的信息 理解淘宝的搜索接口翻页的处理 技术路线requests-refootnote 代码如下 股票数据定向爬虫 ...
- Python网络爬虫与信息提取
1.Requests库入门 Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests ...
- 北京理工大学·Python网络爬虫与信息提取·知识整理
学习目标: python爬虫部分的学习 学习内容: mooc北京理工大学·Python网络爬虫与信息提取 对Scrapy内核依然一知半解,但mooc内容已经学完整理 后续将对Scrapy继续进行学习 ...
- MOOC《Python网络爬虫和信息提取》(第11次)网络爬虫之框架(第4周)
MOOC<Python网络爬虫和信息提取>(第11次)网络爬虫之框架(第4周) MOOC–Python网络爬虫和信息提取(第11次开课) 网络爬虫之框架 21.08.10 目录 文章目录 ...
- Python网络爬虫与信息提取笔记08-实例2:淘宝商品比价定向爬虫
Python网络爬虫与信息提取笔记01-Requests库入门 Python网络爬虫与信息提取笔记02-网络爬虫之"盗亦有道" Python网络爬虫与信息提取笔记03-Reques ...
- 嵩天《Python网络爬虫与信息提取》实例2:中国大学排名定向爬虫
在介绍完requests库和robots协议后,嵩天老师又重点介绍了如何通过BeautifulSoup库进行网页解析和信息提取.这一部分就是在前面内容的基础上,综合运用requests库和Beauti ...
- Python网络爬虫与信息提取(11)—— 爬虫批量搜索音乐并下载
前言 上一篇博客使用requests库加selenium库加Xpath解析html的技术路线下载了单首歌曲,但是存在一个问题:webdriver打开网页十分慢.这一节解决这个问题并修改代码批量下载. ...
最新文章
- linux存储--linux内存分配图(九)
- 如何使用纯 CSS 创建翻牌动画
- ios UITableView默认选中第一行
- Learning Cocos2d-x for WP8(7)——让Sprite动起来
- mysql 图片base64_关于图片的Base64编码
- 实现二维码-完整三种编码流程加代码解析(javascript)
- CCS实例,网页栏目
- hdfs shell
- 事务,动态代理,连接池
- Python爬虫之(三)urllib库
- 快速得到容器ID和veth bridge interface的关系
- 机器学习——信用卡反欺诈案例
- 学术规范作业——心得体会
- linux无法解析域名
- three.js之摄像机
- linux命令下jq的用法(curl 格式化输出json 字符串)
- 日语口语1.13 ジェトロの山本さんから部長のことをお伺いまして
- 【YOLOv7_0.1】网络结构与源码解析
- 基于PCA的图像压缩实现
- 【论文 CCF C】An Adaptive Box-Normalization Stock Index Trading Strategy Based on Reinforcement Learning