电子书数据处理方法与装置的制造方法_3

文档序号:8412569阅读:来源:国知局
1bjectWithSite接口的一个函数。该函数的声明如下:
[0087]HRESULT SetSite(IUnknown*pUnkSite)
[0088]其中,通过pUnkSite这个指针能够获得Browser对象的IWebBrowser2接口,从 IWebBrowser2 接口获取 active document automat1n object 对象,从该对象获取IHTMLDocument2 接口,调用 get_Script 方法,获取 script 对象,表现为 IDispatchEx 接口,从IDispatchEx接口中调用GetDispID方法,为新的JavaScript对象获取一个的ID,再调用InvokeEx方法,将该ID作为对应的_360SafeExp1rer对象对应起来,从此_360SafeExp1rer对象,就可以在JavaScript语言中运用。
[0089]优选地,本实施例中的_360SafeExplorer可以包括:reader(阅读器)对象,用于下载电子书网站中的电子书的正文、解析电子书内容,以及保存电子书的最新章节,具体到本实施例,该reader (阅读器)对象可以用于下载小说正文,解析小说内容,保存最新章节等。
[0090]优选地,在实现时,reader对象可以包括的接口有:navigate方法(导航类):用于访问电子书页面,本实施例中用于访问某一小说页面;
[0091]saveLastReadChapter方法(保存类):用于保存用户在电子书网站最后一次阅读的电子书的信息,本实施例中用于保存最新阅读小说;
[0092]onDocumentComplet方法(解析类):用于从一个电子书网页中解析出包括标题、正文、和上下页信息在内的信息,本实施例中用于一旦该小说页面访问完毕,解析成标题,正文,上一页,下一页等信息。
[0093]优选地,注入程序,本实施例中为_360SafeExplorer,还可以包括以下至少之一:referenceUrl对象(即网址获取对象),用于获取当前电子书网页的网址,本实施例中用于获取当前小说阅读页面URL ;config对象(即配置对象),用于获取当前用户的对当前电子书网页的配置信息,本实施例中用于获取用户当前的配置信息statistics对象(即统计对象),用于对当前用户的历史浏览行为信息进行统计分析,本实施例中用于用户习惯统
i+o
[0094]本实施例中,当用户点击按钮进入阅读模式时,浏览器会先判断待访问的网页是否为包含小说内容的网页,如果是则会调用浏览器的访问页面接口,通过浏览器重新访问一个URL,新访问的URL实质是程序本身(注入程序,即本实施例的DLL文件)包含的一个资源URL,该文件包含阅读模式的JavaScript代码,这样浏览器会加载该JavaScript代码。同时,在网页地址栏上显示se:novel (可选方案,也可不显示)。该网页加载完成之后,C++程序会收到“NavigateComplete”事件通知,在该通知上判断如果网页地址栏显示为se:novel,则向浏览器发出加载BHO请求。浏览器收到之后,会把自己的Browser对象交给C++程序(即注入程序DLL文件)。其中,Browser对象具有浏览器的全部功能,得到Browser对象后能收到该浏览器的一切事件,能在该Browser对象中注入JavaScript对象,并能调用接口让Browser访问URL等。
[0095]小说网页使用的JavaScript语言调用_360SafeExplorer对象下的方法,浏览器的JavaScript解析器,会自动在内部去找该对象所对应的代码,如果发现是被外界注入的,会获取注入时对应的代码,这部分代码即是DLL中的C++程序,这样,C++程序会接管该操作,实现诸如请求小说具体内容等的委托逻辑。
[0096]步骤S308:使用自定义对象访问小说网页,获取和处理小说网页中的数据,并将处理后的数据发送给浏览器进行显示。
[0097]JavaScript资源页(包括JavaScript的植染源代码,以及JavaScript所用到的资源元素)被加载后会调用DLL文件中的C++对象,获取小说内容(不包含广告,通过编程实现广告过滤),C++对象使用内部的WebBrowser访问小说页面,根据内部的规则获取小说的正文内容,再转交给JavaScript对象去进行前端渲染,然后交给浏览器显示。
[0098]优选地,在获取到小说的正文内容后,可以将该内容的数据设置为不可复制数据,从而禁止小说内容的导出功能,防止任意拷贝,实现知识产权保护。
[0099]本步骤中,C++对象即DLL文件中的C++代码中的对象,浏览器的JavaScript使用该对象的方法,如Navagate方法,把要访问的小说页面转交进来,该方法会通过内置的一个浏览器(WEBBROWSER)访问小说页面。
[0100]内部的规则,即电子书页面解析规则,用于获取电子书各部分数据和/或属性。
[0101]优选地,电子书页面解析规则包括:电子书内容提取规则,用于提取电子书网站的当前网页所属的电子书的正文数据、章节内容节数据、首页、书名、和目录地址。更优选地,电子书页面解析规则还包括以下至少之一:电子书网站确定规则,用于根据用户输入的网址,确定该网址对应的网站是否为电子书网站;电子书标识获取规则,用于获取电子书网站的当前网页所属的电子书标识和章节标识。
[0102]本实施例中,内部的规则指对小说页面的解析规则,该规则表明了那个html语言标签下是标题,那个标签下是小说正文,那个标签下的属性是下一页,或者上一页。通过内置的浏览器获取到的页面之后,对该页面进行分析得出。自定义对象根据该内部的规则,可以获取网页中的电子书正文的数据,如小说正文的数据,进而对该数据进行前端渲染后,交给浏览器进行显示。
[0103]例如,本实施例中,可以通过电子书网站确定规则,判断当前URL是否为小说网站的 URL,如:URL 为"~http://www.qidian.com/BookReader/ ! *,*.aspx",解析如下:以http: //www.qidian.com/BookReader/ 开头,同时 URL 不包含 “*,*.aspx” 字符,其中,* 可替代任何数量字符为小说URL,通过http://www.qidian.com/BookReader/可以判断,待访问的网站为小说网站;
[0104]可以通过电子书标识获取规则,获取当前小说页面所属的小说ID,章节10,如:在^http://www.qidian.com/BookReader/*.aspx” 中 * 对应的部分为 bookid ;
[0105]可以通过电子书内容提取规则,提取当前小说首页,书名,目录URL,当前小说章节内容页,小说正文等,如:从〈title el = "l"id = 〃lbChapterName"name = ""classname="〃value = 〃〃regular = 〃〃tag = 〃div〃/^ 中小说标题为 “ I ”,在 Html 页面中,寻找 Id为IbChapterName的标签,该标签名称为div,div下的所有内容即为小说正文。
[0106]步骤S310:每隔设定时间使用注入程序中的WebBrowser访问小说网页,获取小说网页的更新信息。
[0107]浏览器支持用户对小说的收藏,一旦用户添加了小说,会每隔设定时间,如每隔6个小时,在后台使用DLL文件中的内部的WebBrowser去访问小说的页面,根据内部的首页模板,使用对DOM结构解析的接口技术,获取最新章节信息,一旦最新章节信息发生了变化,显示在面板上,同时弹出气泡通知用户有新的小说更新。
[0108]小说一般分为小说首页、目录页、章节页,首页有书名、内容简介、作者简介、最新章节的信息;目录页是目录信息,通过目录页能访问每个小说章节;章节页是小说正文内容。最新章节信息一般保存在小说首页,本实施例中为每个小说网站的首页建立了一个模板,该模板即为内部的首页模板。
[0109]因为使用内部浏览器访问,所以能够拿到小说首页的DOM结构,同时,可以为每个小说网站都建立了一套Html语言的解析规则(电子书页面解析规则),该规则告诉注入程序,哪个标签下是小说书名,哪个标签下是作者名,哪个标签下是最新章节。这样,对DOM结构进行分析,即可找出哪个部分是最新章节等。
[0110]步骤S312:用户点击面板上面更新的最新章节,为用户提供快速的阅读入口。
[0111]通过本实施例,使用BHO技术,用户每开启一个小说网页,就会加载一个BHO请求,本质上就新开启了一个线程,用户可以同时开启多个网页实现多线程的访问,提升了程序性能,给用户更强的视觉体验,又保持了程序的稳定;采用C++结合JavaScript多线程加载小说,加载速度更快而且稳定;由于在线程内获取了小说的内容,并只将内容分离出来加载给JavaScript部分去植染,在这样的阅读模式下,用户不必再受到广告的骚扰(JavaScript加载不到广告);同时,定时使用内部的WebBrowser去访问小说页面,具有小说更新提醒功能;并且,由于只加载小说正文内容,屏蔽了广告,也避免了浏览器调用Flash产生的崩溃(现有浏览器崩溃中,统计显示有多达30%是由于加载的Flash页面产生的崩溃想象,不采用Flash,就不会有该问题的产生);此外,可以在注入程序中设定不允许电子书数据导出,从而不允许用户对小说文本进行拷贝,实现知识产权保护。
[0112]可见,通过本实施例,实现了(I)可以在保证速度和稳定性的前提下,给用户最大的友好体验;(2)可以去掉阅读时的广告;(3)使用多线程技术,给用户快速呈现的阅读体验;(4)网络小说有更新时可以及时提醒用户。
[0113]需要说明的是,本实施例中的DLL文件可以设置于浏览器数据包内部,随同浏览器的安装而一同安装;也可以是独立于浏览器文件的DLL文件,在浏览器安装后供浏览器加载或调用。
[0114]另外,本实施例中以C++和JavaScript语言结合实现注入程序为例,但不限于此,在实际应用中,本领域技术人员还可以采
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1