您的位置:首页 > 编程语言 > Python开发

猫眼爬取专业评分的python

2017-05-22 10:27 288 查看
    最近,需要爬取猫眼的专业评分数据,因为猫眼的专业评分都是经过加密的,很难直接爬取,总的几个方案。    一,就是利用大量的爬取猫眼奇怪的符号,通过规律来破解,找了网上很多资料,后来一看,全是方框.方框,直接放弃    二,利用python的图片图例功能,爬取专业评分的图像,然后二值化,再转化为矢量,来训练模型,通过svm来分类,听过程就知道,很麻烦,但是训练结果集肯定很好,因为不像手写数字那么麻烦。    三,利用pyhon自带的识别二维码的库,但在这过程中也出现了很多bug,搞了好久,网上找各种资料,七拼八凑,很多都只是一点点,所以自己写个完整的,望后来人少走弯路      前提是要有PIL,selenium那个简单,就不说了,这两个都能直接用pip下载,坑的是下一个             一.安装pytesseract         直接用pip命令,pipinstall pytesseract           二.安装tesseract-ocr         这个直接解压到默认位置就行了                          三.查看路径         看看C:/ProgramFiles (x86)/Tesseract-OCR/tesseract.exe这个目录下有没有           四.修改配置文件         在python的安装目录下有个lib包,Lib\site-packages\pytesseract顺着这个路径找下去会出现这个pytesseract.py,点开,找到                     把tesseract的路径改成刚刚查看的路径    五,代码   
#!/usr/bin/python
# -*- coding:utf-8 -*-

from selenium import webdriver
from PIL import Image
import datetime
from pytesseract import *

driver = webdriver.Firefox() # 创建webdriver对象
url = "http://piaofang.maoyan.com/movie/248683?_v_=yes" # 定义目标url
driver.get(url) # 打开目标页面

# 定义截图函数
def snap_shot(url, image_path, scroll_top=90):
# 打开页面,窗口最大化
driver.get(url)
driver.maximize_window()
# 调用JS脚本滚动页面
scroll_js = "var q=document.documentElement.scrollTop={}".format(scroll_top)
driver.execute_script(scroll_js)
# 截图存储
driver.save_screenshot(image_path)

# 定义抠图函数
def crop_image(image_path,  crop_path, scroll_top=90):
# 根据xpath来获取页面元素及其位置、尺寸,我这里是自己定义的,你可以跟你你电脑的分辨率自己调整
# element = driver.find_element_by_xpath(pattern_xpath)
# location = element.location
# size = element.size
# 计算抠取区域的绝对坐标
#这个左是截的图理你的整个浏览器屏幕的上下左右,自己的调整,我的电脑分辨率是这样的
left = 290
top = 150
right = 450
bottom = 180
print (left,top,right,bottom)
# 打开图片,抠取相应区域并存储
im = Image.open(image_path)
im = im.crop((left, top, right, bottom))
im = im.convert('L')
# # 这些处理过程不需要了,加了的话反而识别不出来
# box = (8, 6, 39, 25)
# region = im.crop(box)
# # region.show()
# threshold = 140  # 阈值设为200
# table = []
# for i in range(256):
#     if i < threshold:
#         table.append(0)
#     else:
#         table.append(1)
# out = region.point(table, '1')
# out.show()
# out.save("snap_shot/train/digit_2.png")
#直接保存
im.save(crop_path)

# 获取当前时间戳
now = datetime.datetime.now()
now_sign = str(now.day)+str(now.hour)+str(now.minute)+str(now.second)
# 启动截图函数,获取当前页面
snap_shot_path_1 = "snap_shot/maoyan_{0}_{1}.png".format('1', now_sign)
snap_shot(url, snap_shot_path_1, scroll_top=0)

# 启动抠图函数
pattern = "/html/body/div[2]/div/section[1]/div[1]/div[2]/div[2]/p[5]"
crop_path = "snap_shot/crop/current_piaofang7.png"
crop_image(snap_shot_path_1, crop_path, scroll_top=0)
#到这里,抠图过程完成,接下来就是验证看shownum.py
#!/usr/bin/python# -*- coding:utf-8 -*-from selenium import webdriverfrom PIL import Imageimport datetimefrom pytesseract import *def shownumber():im=Image.open('snap_shot/train/current_piaofang7.png')im.show()print(pytesseract.image_to_string(im))if __name__ == '__main__':shownumber()
对了,再下载一个火狐浏览器,下面是结果图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: