&[root@xxn maoyan]# cat cat.py

#!/usr/bin/env python

#coding:utf-8

import requests

from bs4 import BeautifulSoup

def movieurl(url):

"""

用来获取电影的单页url地址

"""

headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36",

}

response = requests.get(url,headers=headers,timeout=10)

soup= BeautifulSoup(response.text,'lxml')

href = soup.find_all('div',class_="channel-detail movie-item-title")[0]

movieurl = "http://maoyan.com%s" % href.find('a')['href']

return movieurl

def moveinfo(url):

"""

得到电影的中文名,票房单位。

如果票房单位没数据,说明票房"暂无"。

"""

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36",

}

response = requests.get(url, headers=headers,timeout=5)

soup = BeautifulSoup(response.text, 'lxml')

Chinesename = soup.find('div',class_="movie-brief-container").h3.string

try:

boxofficeunit = soup.find_all('div',class_="movie-index-content box")[0].find('span',class_='unit').string

except:

boxofficeunit = 0

return Chinesename,boxofficeunit

if __name__ == '__main__':

Moviename = input("请输入电影的英文名字:")

Moviename = Moviename.replace(' ','+')

url = "http://maoyan.com/query?kw=%s&type=0" % Moviename

Chinesename, boxofficeunit = moveinfo(movieurl(url))

print Chinesename,boxofficeunit

&[root@xxn maoyan]# cat maoyan.py

#!/usr/bin/env python

# coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

import random

from PIL import Image

import pytesseract

import os

import cat

def imagedownlod(url):

"""

把电影单页做个截图保存,因为我们要取票房数据,所以不进行图片载入,加快速度

"""

dcap = dict(DesiredCapabilities.PHANTOMJS)

USER_AGENTS=[

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13059.400'

]

#从USER_AGENTS列表中随机选一个浏览器头,伪装浏览器

dcap["phantomjs.page.settings.userAgent"] = (random.choice(USER_AGENTS))

driver = webdriver.PhantomJS(desired_capabilities=dcap)

# 不载入图片,爬页面速度会快很多

dcap["phantomjs.page.settings.loadImages"] = False # 禁止加载图片

driver = webdriver.PhantomJS(desired_capabilities=dcap)

driver.set_window_size(1366, 3245)

driver.get(url)

driver.save_screenshot("maoyan.png")

def crop_image(image_path,crop_path):

"""

本来想利用webdriver来得到票房元素的位置,然后根据位置和元素大小做数字运算求出来4个参数,位置可以正常得到,但是图片大小不一,所以抠图会有问题

所以换种方式:我把每个页面截图修改成统一大小,因为票房的位置是固定的,所以这样可以使爬虫更强健。

"""

# 计算抠取区域的绝对坐标

left = 668

top = 388

right = 668+158

bottom = 388+54

# 打开图片,抠取相应区域并存储

img = Image.open(image_path)

out = img.resize((1366, 3245),Image.ANTIALIAS) #resize image with high-quality

out.save('maoyannew.png')

im = Image.open('maoyannew.png')

im = im.crop((left, top, right, bottom))

im.save(crop_path)

os.remove('maoyannew.png')

def words(image):

"""

因为我们对不同大小的图片进行归一化处理,所以有些图片pytesseract不能识别数字

所以我首先进行灰度处理,然后使用config="-psm 8 -c tessedit_char_whitelist=1234567890"这个参数

"""

im = Image.open(image).convert('L')

im.save(image)

number =  pytesseract.image_to_string(Image.open(image),config="-psm 8 -c tessedit_char_whitelist=1234567890")

os.remove(image)

return number

if __name__ == '__main__':

Moviename = input("请输入电影的英文名字:")

Moviename = Moviename.replace(' ','+')

url = "http://maoyan.com/query?kw=%s&type=0" % Moviename

Chinesename,boxofficeunit = cat.moveinfo(cat.movieurl(url))

imagedownlod(cat.movieurl(url))

crop_image('maoyan.png','piaofang.png')

print words('piaofang.png')

os.remove('maoyan.png')

&[root@xxn maoyan]# cat catseye.py

#!/usr/bin/env python

# coding=utf-8

import cat

import maoyan

import sys

import os

reload(sys)

sys.setdefaultencoding('utf8')

def main():

moviename = input("请输入电影的英文名字:")

Moviename = moviename.replace(' ','+')

Moviename = moviename.replace(':','%3A')

url = "http://maoyan.com/query?kw=%s&type=0" % Moviename

Chinesename,boxofficeunit = cat.moveinfo(cat.movieurl(url))

if boxofficeunit == 0:

"""

如果票房单位为0也就是不存在,那么电影票房也就是暂无,所以我们就不需要抠图识别数字了

"""

print "您搜索的电影英文名字:" + moviename

print "您搜索的电影中文名字:" +  Chinesename

print "你搜索的电影票房:" + '暂无'

else:

maoyan.imagedownlod(cat.movieurl(url))

maoyan.crop_image('maoyan.png','piaofang.png')

number = maoyan.words('piaofang.png')

print "您搜索的电影英文名字:" + moviename

print "您搜索的电影中文名字:" +  Chinesename

print "你搜索的电影票房:" + str(number2) + str(boxofficeunit)

os.remove('maoyan.png')

if __name__ == '__main__':

main()

测试:

python语言中整型对应的英文名_python实现给定电影英文名,在猫眼上爬到中文名和票房...相关推荐

  1. python语言中整型对应的英文_Python基本数据类型详细介绍(转)

    1.空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能理解为0,因为0是有意义的,而None是一个特殊的空值. 2.布尔类型(Boolean) 在 Py ...

  2. python语言中整型对应的英文是什么-12.Python数值类型(整形、浮点型和复数)及其用法...

    实际开发中,我们经常需要使用数字记录游戏中用户的得分.游戏中角色的生命值.伤害值等信息,Python 语言提供了数值类型用于保存这些数值. 需要注意的是,Python 中这些数值类型都是不可改变的,也 ...

  3. 用python实现给定电影英文名,在猫眼上爬到中文名和票房

    [root@xxn maoyan]# cat cat.py #!/usr/bin/env python #coding:utf-8import requests from bs4 import Bea ...

  4. 10分钟用python实现给定电影英文名,在猫眼上爬到中文名和票房

    & [root@xxn maoyan]# cat cat.py #!/usr/bin/env python #coding:utf-8import requests from bs4 impo ...

  5. python实现给定电影英文名,在猫眼上爬到中文名和票房

    & [root@xxn maoyan]# cat cat.py #!/usr/bin/env python #coding:utf-8import requests from bs4 impo ...

  6. c语言整形符号位_C语言中整型无符号二进制数的表示问题

    龙源期刊网 http://www.qikan.com.cn C 语言中整型无符号二进制数的表示问题 作者:马红旭 来源:<电子技术与软件工程> 2015 年第 20 期 摘 要 文章解决的 ...

  7. python语言中不属于组合数据类型的是_python的基本语法(组合数据类型),基础...

    python的基础语法(组合数据类型) 一,list列表 python 语言中使用组合数据类型进行操作, 最常见的组合数据类型之一~就是 list 列表. 1 什么是列表? 列表是 组合数据类型 中的 ...

  8. C语言中整型浮点型在计算机中的存储

    第一次写博客,遣词造句有点菜,算是一次简单梳理,慢慢学习人家的博客风格,随着学习的深入再做修改. 本次学习的是C语言在VS下的编译调试,对于初学者两说,首先说一下如何监控变量,以及监控变量在内存中的存 ...

  9. C语言中整型在计算机中的存储

    一 . 整型的表示 1.字面值后面加上L(l)表示long长整型 2.字面值后面加上U(u)表示usigned整型值 3.十进制123  ... 4.八进制,以0开头,如0123,0754  ... ...

最新文章

  1. Solr嵌套子文档的弊端以及一种替代方式
  2. Outlook中自定义新邮件提醒
  3. hikvision v2.3控件网页demo_昆山UI网页设计师专业培训班 UI设计好就业吗?
  4. C# MD5加密解密帮助类
  5. boost的multi_index的使用
  6. 安卓9.0官方系统升级包_华为、荣耀公布可升级安卓10.0机型,你的手机在名单之内吗?...
  7. 前端学习(3172):react-hello-react之实现底部功能
  8. n型半导体和p型半导体的区别_PNP和NPN的区别和判别方法,网友:太厉害了!终于有人能讲明白了...
  9. 为啥有的人能受穷,却不能吃苦?
  10. 前台 时不时报 could not proxy request_长春中考成绩不理想可以报的高中
  11. WAP开发资料站(最新更新)
  12. 警告:Vista存高风险 不宜过早安装
  13. java程序a-z b-y_请完成下列Java程序:对大写的26个英文字母加密,从键盘输入一个大写字母串..._考试资料网...
  14. 在线LaTeX公式编辑器(备忘)
  15. 360全景图PS更换天空背景
  16. C#panel渐变绘制
  17. 利用pygame实现大鱼吃小鱼游戏
  18. powerBI使用概览
  19. 少室山论道——天下武功
  20. DecisionCurve决策曲线分析法

热门文章

  1. 这些证书可以在复试时加分!有机会一定要考!
  2. 修改内核printk函数打印等级
  3. 计算平均成绩(PTA)
  4. 配置与管理Samba服务器
  5. 电视HDMI接口是什么 有什么用 怎么用
  6. 我是一只小僵尸java,我的世界:出生意味着“死亡”,假如你是一只僵尸,该如何活下去...
  7. android xutils框架缓存图片,xUtils框架的使用
  8. 冷链物流解决方案案例-基因检测机构检爱网
  9. java 8 stream入门_java8 Stream 流快速入门
  10. Segd 2.1格式注释