下面来逐行解释一下前面的那个 Hello, world!程序,尽管很简单,但却可以对 Qt 程序的结构有一个清楚的认识。现在再把代码贴过来:#include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello, world!"); label->show();
任何编程技术的学习第一课基本上都会是 Hello, world!,我也不想故意打破这个惯例——照理说,应该首先回顾一下 Qt 的历史,不过即使不说这些也并无大碍。或许有人总想知道,Qt 这个单词是什么意思。
Qt 是一个著名的 C++ 库——或许并不能说这只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI。使用 Qt,在一定程序上你获得的是一个“一站式”的服务:不再需要研究 STL,不再需要 C++ 的string,因为Qt有它自己的 QString 等等。或许这样说很偏激,但 Qt 确实是一个“伟大的 C++ 库”。我们所使用的 Qt,确切地说也就是它的 GUI 编程部分。
我们使用 dmoz.org 这个网站来作为小抓抓一展身手的对象。首先先要回答一个问题。问:把网站装进爬虫里,总共分几步?
前面十章爬虫笔记陆陆续续记录了一些简单的 Python 爬虫知识,用来解决简单的贴吧下载,绩点运算自然不在话下。不过要想批量下载大量的内容,比如知乎的所有的问答,那便显得游刃不有余了点。于是乎,爬虫框架 Scrapy 就这样出场了!Scrapy = Scrach+Python,Scrach 这个单词是抓取的意思,暂且可以叫它:小抓抓吧。小抓抓的官网地址:点我点我。
先来说一下我们学校的网站:http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html查询成绩需要登录,然后显示各学科成绩,但是只显示成绩而没有绩点,也就是加权平均分。显然这样手动计算绩点是一件非常麻烦的事情。所以我们可以用python做一个爬虫来解决这个问题。决战前夜先来准备一下工具:HttpFox 插件。
更新:百度贴吧现在已经改成 utf-8 编码了吧,需要把代码中的 decode('gbk')改成 decode('utf-8')。百度贴吧的爬虫制作和糗百的爬虫制作原理基本相同,都是通过查看源码扣出关键数据,然后将其存储到本地 txt 文件。源码下载:http://download.csdn.net/detail/wxg694175346/6925583项目内容:用 Python 写的百度贴吧的网络爬虫。使用方法:新建一个 BugBaidu.
Q&A:为什么有段时间显示糗事百科不可用?答:前段时间因为糗事百科添加了 Header 的检验,导致无法爬取,需要在代码中模拟Header。现在代码已经作了修改,可以正常使用。为什么需要单独新建个线程?答:基本流程是这样的:爬虫在后台新起一个线程,一直爬取两页的糗事百科,如果剩余不足两页,则再爬一页。
接下来准备用糗百做一个爬虫的小例子。但是在这之前,先详细的整理一下 Python 中的正则表达式的相关内容。正则表达式在 Python 爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器。正则表达式基础概念介绍正则表达式是用于处理字符串的强大工具,它并不是 Python 的一部分。
# -*- coding: utf-8 -*-#---------------------------------------# 程序:百度贴吧爬虫# 版本:0.1# 作者:why# 日期:2013-05-14# 语言:Python 2.7# 操作:输入带分页的地址,去掉最后面的数字,设置一下起始页数和终点页数。# 功能:下载对应页码内的所有页面并存储为html文件。
前面说到了 urllib2 的简单入门,下面整理了一部分 urllib2 的使用细节。Proxy 的设置urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。如果想在程序中明确控制 Proxy 而不受环境变量的影响,可以使用代理。新建 test14 来实现一个简单的代理 Demo:import urllib2 enable_proxy = True proxy_handler = urllib2.
在开始后面的内容之前,先来解释一下 urllib2 中的两个个方法:info and geturlurlopen 返回的应答对象 response(或者 HTTPError 实例)有两个很有用的方法 info()和 geturl()geturl()这个返回获取的真实的 URL,这个很有用,因为 urlopen(或者 opener 对象使用的)或许会有重定向。获取的 URL 或许跟请求 URL 不同。
先来说一说 HTTP 的异常处理问题。 当 urlopen 不能够处理一个 response 时,产生 urlError。不过通常的 Python APIs 异常如 ValueError,TypeError 等也会同时产生。HTTPError 是 urlError 的子类,通常在特定 HTTP URLs 中产生。URLError通常,URLError 在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。这种情况下,异常同样会带有"
版本号:Python2.7.5,Python3 改动较大,各位另寻教程。所谓网页抓取,就是把 URL 地址中指定的网络资源从网络流中读取出来,保存到本地。类似于使用程序模拟 IE 浏览器的功能,把 URL 作为 HTTP 请求的内容发送到服务器端, 然后读取服务器端的响应资源。在 Python 中,我们使用 urllib2 这个组件来抓取网页。
网络爬虫的定义网络爬虫,即 Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么 Spider 就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页的。从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。
为什么用 Python 写网络爬虫?Python 这种稍严谨而流行库又非常多的语言, 大大弱化了计算机运行速度对程序的影响, 强化了为程序员容易思考而打造的特性,所以选择 Python 来实现网络爬虫。本教程简单的介绍如何使用 Python 的相关模块如 urllib2 来实现网络爬虫。适用人群想要效率的截取网络素材,有批量抓取需求的开发者。
只要做过WEB开发人对于“404”已经再熟悉不过了吧。当我们访问的资源不存在时,它就会跑出来跟你打招呼啦。但是默认情况下,404页面比较简陋,不是很友好。而且一般用户不知道404是个神马东东,还以为是程序写的有问题呢。这样一来用户体验就打折扣了。所以通常情况下,我们都需要对这些常见的错误进行处理。
项目用的是SSH基础框架,其中有一些信息很类似,但又不尽相同。如果每一个建一个实体的话,那样实体会太多,如果分组抽象,然后继承,又不是特别有规律。鉴于这种情况,就打算让用户自己配置要添加的字段,然后生成对应的表。需要动态配置的部分实例:上图只是一小部分,一个一个组合起来大概有三百多。
很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照.hbm.xml文件,要屡清一个Action可能需要对照applicationContext.xml和struts*.xml文件。
前面说完了Spring、Hibernate,很自然今天轮到struts了。struts的核心原理就是通过拦截器来处理客户端的请求,经过拦截器一系列的处理后,再交给Action。
关注时代Java