爬虫--scrapy 初探

来源:互联网 发布:淘宝怎么避免同款 编辑:程序博客网 时间:2024/05/29 15:42

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

写爬虫比较popular的语言是python,楼主主要就是用python写,到现在也写过一二十个简单爬虫了;
网上也有写的比较好的介绍
http://www.zhihu.com/question/20899988

盗个图,这就是基本原理
这里写图片描述

大概流程有 :

                   |-----------------------------|                   站点URL-->Request-->Parse-->new URL                                            -->data-->database                                                   -->file

我也不想把API里的document翻译一遍,记录一下实践中遇到的问题,见招拆招,与网站建立者斗智斗勇(PS:楼主还是比较遵守爬虫守则的)
1. header:
一般有防护意识的网站都会判断是用户 还是 rebot发出的请求,而请求头(header)里的信息就能起到这个作用。
1.2 Cookie:记录用户的行为;
可以用作后台的判定和记录,如果网站只在cookie里做了手脚,比如限制用户的下载次数,明文的话有时可以修改欺骗服务器;scrapy提供cookie的自动维护,也可以关闭
1.3 Referer: 防盗链功能, 加上可以绕过;

request = scrapy.Request(URL, callback=self.parse, header={……})

1.4 “X-Requested-With”: “XMLHttpRequest” ajax请求,一般都是Post的,采用如下方法

request = scrapy.http.FormRequest(url=aaaaaa, formdata=post_data, callback=self.parse_code, dont_filter=True, method="POST")

有时为了省事,直接加上所有header信息,多部分网站能搞到,但有时也能被他玩到,最好的办法还是要搞清楚它的工作原理

2. 浏览器开发者工具
每个浏览器基本上都自带有开发者工具,个人比较习惯Firefox的
抓包的追踪功能确实挺爽,但也有搞不定的时候:
比如我在抓一个网站的时候,一个a标签,点击跳转到_blank,然后在js里调了一次函数,本页面会有302跳,那么抓包工具就只能抓到本页面的所有的加载,而新跳出的页面没有记录(个人觉得是可以设置的,可是一直没有找到,如果有知道的牛人,还请不吝指教,感激不尽),如果有记录的话,那简直就是爽到爆啊,如果新页面我们需要的信息,刚好在新页面,而新页面有做了比较好的防护,那我们就惨了,得花时间了:

两条路:1、追踪js等跳转代码,js写的比较乱的网站,这种方法简直就是折磨,加上对js不是很熟,放弃了2、根据经验破解,回到第一条header里的一些信息,或者post的参数等等

不好意思,写的比较乱,我看了一遍,好像有些地方写的只有自己知道是什么意思,懒得改了,大概意思应该能明白

1 0
原创粉丝点击