时光网内地影视票房Top100爬取
为了和艺恩网的数据作比较,让结果更精确,在昨天又写了一个时光网信息的爬取,这次的难度比艺恩网的大不少,话不多说,先放代码
# -*- coding:utf-8 -*-
from __future__ import print_function
import urllib2
import re
print(u"电影;首日票房;首周票房;时光评分;评分人数;总票房")
pre_url="http://movie.mtime.com/boxoffice/?area=china&type=MovieRankingHistory&category=all&page="
'''3&display=list×tamp=1496903738364&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json'''
for index in range(10):
aft_url=str(index)+"&display=list×tamp=1496903738364&version=07bb781100018dd58eafc3b35d42686804c6df8d&dataType=json"
url=pre_url+aft_url
response = urllib2.urlopen(url)
pageCode=response.read().decode('utf-8')
pattern = re.compile(u"h3><a[^>]*>([^<]+)(?:.+?首日<strong>([^<]+)(?:.+?首周<strong>([^<]+))?)?.*?point[^>]*>(\d)<em>.(\d).*?<p>(.*?)人.*?totalnum[^>]*><strong>([^<]+).*?", re.S)
divide = re.compile("(<\/div><\/div>.*?none\S\S>[^p]*p>)", re.S)
items=re.findall(divide, pageCode)
for item in items:
iitems=re.findall(pattern, item)
for iitem in iitems:
print(iitem[0], end=';')
if(iitem[1]==''):
print('', end=';')
elif(float(iitem[1])>=100):
print(float(iitem[1])/10000.0, end=';')
else:
print(iitem[1], end=';')
if (iitem[2] == ''):
print('', end=';')
elif (float(iitem[2]) >= 100):
print(float(iitem[2])/10000.0, end=';')
else:
print(iitem[2], end=';')
print(iitem[3], end='.')
print(iitem[4], end=';')
print(iitem[5], end=';')
print(iitem[6]+u'亿', end=';')
print('')
时光网信息爬取的难点主要在于他的正则不好写
大部分电影首日票房与首周票房都有
部分电影有首日票房,没有首周票房
还有一部分电影首日票房首周票房都没有
比较好的解决办法就是在网页中将十部电影的代码分开,分别处理
如果不这么办就会出现本部电影捕获到下一部电影的票房的情况,紧接着下一部电影的信息会覆盖该部电影的信息,同时,下一部电影也将消失,等于少捕获了一部电影
所以就要在正则中采取"有则捕获,无则略过"的策略
主要做法是使用(?:(xxx))?yyy(zzz)的方法在寻找下一捕获目标选择性的对不知道是否存在的目标进行捕获
由于不会存在有首周无首日的情况,所以采取了(?:(首日)(?:(首周))?)?的策略
由于python2对中文编码的支持比较差,正则写出来始终有小bug,但在regex101中就能通过,后来在正则两边加入了u' ',才豁然开朗
时光网内地影视票房Top100爬取的更多相关文章
- 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用
学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...
- python爬取糗事百科段子
初步爬取糗事百科第一页段子(发布人,发布内容,好笑数和评论数) #-*-coding:utf--*- import urllib import urllib2 import re page = url ...
- 模拟登陆并爬取Github
因为崔前辈给出的代码运行有误,略作修改和简化了. 书上例题,不做介绍. import requests from lxml import etree class Login(object): def ...
- 使用for或while循环来处理处理不确定页数的网页数据爬取
本文转载自以下网站: Python For 和 While 循环爬取不确定页数的网页 https://www.makcyun.top/web_scraping_withpython16.html 需 ...
- 使用BeautifulSoup和正则表达式爬取时光网不同地区top100电影并使用Matplotlib对比
还有一年多就要毕业了,不准备考研的我要着手准备找实习及工作了,所以一直没有更新. 因为Python是自学不久,发现很久不用的话以前学过的很多方法就忘了,今天打算使用简单的BeautifulSoup和一 ...
- 艺恩网内地总票房排名Top100信息及其豆瓣评分详情爬取
前两天用python2写的一个小爬虫 主要实现了从http://www.cbooo.cn/Alltimedomestic这么个网页中爬取每一部电影的票房信息等,以及在豆瓣上该电影的评分信息 代码如下 ...
- PYTHON 爬虫笔记八:利用Requests+正则表达式爬取猫眼电影top100(实战项目一)
利用Requests+正则表达式爬取猫眼电影top100 目标站点分析 流程框架 爬虫实战 使用requests库获取top100首页: import requests def get_one_pag ...
- 爬虫系列(1)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- 一起学爬虫——使用xpath库爬取猫眼电影国内票房榜
之前分享了一篇使用requests库爬取豆瓣电影250的文章,今天继续分享使用xpath爬取猫眼电影热播口碑榜 XPATH语法 XPATH(XML Path Language)是一门用于从XML文件中 ...
随机推荐
- Linux使用ssh测试端口
在windows上可以使用telnet客户端测试,在linux如果不方便安装telnet客户端的时候可以通关ssh来测试端口 具体命令如下 ssh -v -p 8080 root@59.207.252 ...
- Linux环境下安装中山大学东校区iNode客户端
在中山大学登录校园网有两种方式,一种是连接WiFi,另一种是连接网线.这两种上网方式都需要用到NetID,但是连接网线的话还需要使用到iNode客户端(指东校区). Windows下iNode客户端的 ...
- 计算机网络漫谈之IP数据包
网络层从 网络层 .IP与子网掩码 前前后后我们也说了两次了,IP 这个东西絮絮叨叨的也一直在提.今天我们来解开IP协议的面纱,还记得我们之前在数据链路层说的物理帧的结构吗?就是这样: 其中Head叫 ...
- k8s入坑之路(2)kubernetes架构详解
每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题. 基于 Kubernetes 作为容器集群的管理平 ...
- git删除未被追踪的文件
# 先看看会删掉哪些文件,防止重要文件被误删 git clean -n # 删除 untracked files git clean -f # 连 untracked 的目录也一起删掉 git cle ...
- fabric运行记录
创建第一个fabric网络 Generate Network Artifacts cd first-network 先关闭服务 ./byfn.sh -m down 然后创建 ./byfn.sh -m ...
- Maven 依赖调解源码解析(一):开篇
本文是系列文章<Maven 源码解析:依赖调解是如何实现的?>第一篇,主要做个开头介绍.并为后续的实验做一些准备.系列文章总目录参见:https://www.cnblogs.com/xia ...
- vue属性绑定不能用双括号表达式
- Codeforces 1413F - Roads and Ramen(树的直径+找性质)
Codeforces 题目传送门 & 洛谷题目传送门 其实是一道还算一般的题罢--大概是最近刷长链剖分,被某道长链剖分与直径结合的题爆踩之后就点开了这题. 本题的难点就在于看出一个性质:最长路 ...
- MariaDB—备份数据库
1> 备份单个数据库 mysqldump -uroot -plichao123 --database students1 > stundents.sql; 2>查看备份文件 3> ...