2019 7.9学习笔记

Tesseract

OCR技术指的是将图片翻译成文字的光学文字识别技术。Tesseract是一个开源的OCR库,目前有谷歌赞助。Tesseract是目前公认最优秀、最准确的开源OCR库。

#######################################################################################################################################

(安装了1个多小时 环境变量配了命令行执行不了 佛了 现在卸载重装 睡觉睡觉)                            ###########                                 已解决

(不知道为什么命令行还是执行不了 显示‘tesseract’不是内部或外部指令,也不是可运行的程序或批处理文件)#######             重启电脑     环境变量就会更新  坑了我大半个晚上

#######################################################################################################################################

但是用pycharm能跑

 

测试用图:

测试代码:

from PIL import Image
import pytesseract
#pytesseract.pytesseract.tesseract_cmd=r"C:\Program Files\Tesseract-OCR\tesseract.exe"   #设置路径
text = pytesseract.image_to_string(Image.open(r'C:\Users\Administrator\Desktop\image.png'))  #可在open里的路径后面加 lang='chi_sim' 来识别中文
print(text)

运行结果:

Python3WebSpider

 

 中文的也可以识别

测试用图:

需要在后面加上 " -l chi_sim "

运行结果

2007年入学三峡大学,一个二本院校,专业计算机科学与技术,录到分数线高一本差15分 (现在三峡大学录取分数线已经高于一本线30多分了,顺便为母校做个广告) 。我大学一入学就担任了班级团支部书记,班上同学们很多事我都
得管,所以和他打交道也不少。

X君来自一个单亲家庭,家庭盆困,在学校时评的是A类贫困生,上大学主要靠助学贫款和助学全。喜欢理工科,高中的时候物理况赛得过奖 (具体级别我记了) ,上大学前就学过一点C语言。英语很差,毕业时英语四级还没过,当时他
想保研,但这个硬性条件没过,只能选择就业了-

用pytesseract处理拉勾网图形验证码

import pytesseract
from urllib import request
from PIL import  Image
import time

def main():
    url="xxxxxxxxxxxxxxxxxxxxxxxxxxxx"  #network里能看到的url
    while True:
        request.urlretrieve(url,'captcha.png')
        image=Image.open('captcha.png')
        text=pytesseract.image_to_string(image)
        print(text)
        time.sleep(2)

if __name__ == '__main__':
    main()

使用selenium+chromedriver来实现12306抢票

1.让浏览器打开12306的登录界面,然后手动进行登录

2.登录完成后让浏览器跳转到购票的界面

3.手动输入出发地、目的地以及出发日期,检测到以上三个信息都输入完成后,然后找到查询按钮,执行点击事件,进行车次查询

4.查找我们需要的车次,然后看下对应的席位是否还有余票(有or数字),找到这个车次的预订按钮,然后执行点击事件。如果没有出现以上两个(有or数字),那么我们就让这个查询工作一直循环

5.一旦检测到邮票(有or数字),那么执行预订按钮的点击事件来到预订的界面后,找到对应的乘客,然后执行这个乘客的checkbox,然后执行点击事件,再找到提交订单的按钮,执行点击事件

6.点击完提交订单按钮以后,会弹出一个确认的对话框,然后找到“确认按钮”,然后执行点击事件,这样就完成了抢票

from selenium import webdriver
from  selenium.webdriver.support.ui import WebDriverWait
from  selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
class Qiangpiao(object):
    def __init__(self):
        self.login_url="https://kyfw.12306.cn/otn/resources/login.html"
        self.initmy_url="https://kyfw.12306.cn/otn/view/index.html"
        self.search_url="https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc"
        self.passenger_url="https://kyfw.12306.cn/otn/confirmPassenger/initDc"

        self.driver=webdriver.Chrome(executable_path=r"E:\chromedriver\chromedriver.exe")
    def wait_input(self):
        self.from_station=input("出发地:")
        self.to_station=input("目的地:")
        #时间格式必须是: yyyy-mm-dd 的方式
        self.dapart_time=input("出发时间:")
        self.passengers=input("乘客姓名(如有多个乘客,用英文逗号隔开):").split(",")
        self.trains=input("车次(如有多个车次,用英文逗号隔开):").split(",")
    def _login(self):    #一般外部不调用
        self.driver.get(self.login_url)
        #显示等待   一直等一直等
        #隐示等待   规定时间等 时间到了走
        WebDriverWait(self.driver,1000).until(
            EC.url_to_be(self.initmy_url)
        )
        print("登录成功!")
    def _order_ticket(self):
        # 1.跳转到查余票的界面
        self.driver.get(self.search_url)
        # 2.等待出发地是否输入正确
        WebDriverWait(self.driver,1000).until(
            EC.text_to_be_present_in_element_value((By.ID,"fromStationText"),self.from_station)
        )
        # 3.等待目的地是否输入正确
        WebDriverWait(self.driver,1000).until(
            EC.text_to_be_present_in_element_value((By.ID,"toStationText"),self.to_station)
        )
        # 4.等待出发日期是否输入正确
        WebDriverWait(self.driver,1000).until(
            EC.text_to_be_present_in_element_value((By.ID,"train_date"),self.dapart_time)
        )
        # 5.等待查询按钮是否可用
        WebDriverWait(self.driver,1000).until(
            EC.element_to_be_clickable((By.ID,"query_ticket"))
        )
        # 6.如果能够被点击了,那么就找到这个查询按钮,执行点击事件
        searchBtn=self.driver.find_element_by_id("query_ticket")
        searchBtn.click()
        # 7.在点击了查询按钮,等待车次信息是否显示出来
        WebDriverWait(self.driver,1000).until(
            EC.presence_of_element_located((By.XPATH,".//tbody[@id='queryLeftTable']/tr"))
        )
        # 8.找到所有没有datatrain属性的tr标签,这些标签存储了车次信息
        tr_list=self.driver.find_element_by_xpath(".//tbody[@id='queryLeftTable']/tr[not(@datatrain)]")
        # 9.遍历所有满足条件的tr标签
        for tr in tr_list:
            train_number=tr.find_element_by_class_name("number").text
            if train_number in self.trains:
                left_ticket=tr.find_element_by_xpath(".//td[4]").text
                if left_ticket==""or left_ticket.isdigit:
                    orderBtn=tr.find_element_by_class_name("btn72")
                    orderBtn.click()
                    #等待是否来到了确认乘客的界面
                    WebDriverWait(self.driver,1000).until(
                        EC.url_to_be(self.passenger_url)
                    )
    def run(self):
        self.wait_input()
        self._login()
        self._order_ticket()
if __name__ == '__main__':
    spider=Qiangpiao()
    spider.run()

 

posted on 2019-07-10 04:36  Joker乔柯  阅读(226)  评论(0编辑  收藏  举报

导航