程序使用说明

所有程序文件均在压缩包中,本文对各个文件作用及如何使用进行说明,文件具体内容参见程序内注释。程序文件后缀为.py,可以用任意编辑器打开,包括记事本,建议用安装python自带的idle或其他带有语法高亮的编辑器打开。

文件结构

文件夹中包含文件夹tutorial,文件db_proxy.db,get_proxy_from_kuai.py。其中tutorial中包含爬虫文件(这个名字是因为我在学的时候按照教程直接输的),get_proxy_from_kuai.py用于爬取代理网址,从网站http://www.66ip.cn 的自动提取接口获取,感兴趣的可以看一下这个文件,db_proxy.db是存储爬取的代理信息的数据库文件,这个文件可以用sqlite expert打开查看(实际使用中直接用python读取文件,数据库操作可以参见获取代理的程序文件)。

tutorial下有spider文件夹和其他一些文件,spider是存放爬虫文件的,其他文件主要是一些配置文件等,我们用到的主要有settings.py,middlewares.py,分别是设置文件和中间件文件(用于更换代理)。

spiders中包含四个文件,其中init.py不用管,items.py是存储item类的文件,item的作用为:

Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。

剩下两个文件是主体文件,分别为二手房爬取程序和小区爬取程序。

使用方式

要在自己电脑上运行这些程序,首先要安装python,然后安装需要用到的一些库,包括scrapy,requests,sqlite3,beautifulsoup4,关于库的说明及安装方式可以参照这个链接,建议安装一个好的集成开发环境(ide),我用的是pythonxy,自带一个spyder编辑器,自动补全还算不错,另外就是会。当然也可以用python自带的idle编辑。

scrapy程序需要在命令行中运行,所以运行时需要打开命令行切换到文件所在目录,windows下切换目录的方式参见该链接,当然如果和我一样安装了pythonxy的话在文件浏览器中右键就会有一个选项:open enhanced console here,即打开一个命令行窗口,且位置在这里。

说明.png

之后就可以运行了,命令是scrapy crawl Lianjia_Ershou -o name.csv。其中scrapy是主命令,crawl表示运行一个爬虫,Lianjia_Ershou是爬虫名,在程序中定义,-o表示将结果输出到文件,name.csv是输出的目标文件。


程序运行界面

网络相关的一些基础知识

首先关于访问网页的一个基本流程:1、客户端向服务端发起请求,请求中可能包含一些数据(类似于用户名等)。2、服务端验证用户端信息并返回数据。3、客户端对数据进行处理得到最终呈现的网页。这个过程中我们最关注的是如何在第二步中让服务端认为我们不是爬虫,下面是一个典型的请求:

Paste_Image.png

主要关注右边,上面是请求,下面是服务器的应答,请求中我们需要关注的时user-agent,这个字段表示用户是以什么客户端访问的,这张图里面我是抓的chrome访问链家的包,所以该字段是 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36,如果我是用python简单的发送一个请求的话该字段就是空的。一些网站会简单的以这个来判断是否爬虫,另外一个重要的就是cookies,这个是网站用来标记用户的字段,链家在一个ip大量访问后会屏蔽该ip,然后弹出验证页面,验证通过后可以继续访问,但是只是浏览器可以继续访问,除非在python发送请求时加上网站交给浏览器的cookies,当然因为我们通过换ip的方式回避,所以不用理会这个。

其他一些常见的反爬虫策略及应对措施参见下面这个链接

其他注意事项

在程序抓取并验证代理是否可用时采用了多线程,关于多线程的情况参见链接

程序中一些地方用到了正则表达式,参见链接

程序中在请求传递过程中用到了meta参数,对于这个东西说明如下:meta相当于request的一个参数,通过request.meta访问,它本身是一个字典,用于传递信息。

网络会用数字返回访问结果,例如404等,这些数字含义参见链接,其中3开头的是重定向,严格来说这并不是一种错误,但是链家在判断用户为异常流量后会指向验证页面,即返回302,因此对于这个状态码也重试,而不是取访问异常流量验证页面

在程序中会看到很多yield而不是return,关于yield参见链接,简单来说yield就是在程序运行到相应位置时暂停并返回一个东西,而后再次运行而不是像return一样直接停止程序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容