scrapy使用要点

使用技巧:

1、编写爬虫时,如果起始链接不是固定的,而且包含很多个,建议使用start_requests方法,代替:start_urls列表。参考1  参考2
2、pipelines.py中, open_spider在爬虫开启的时候仅执行一次;close_spider在爬虫关闭的时候仅执行一次;这俩个方法常用于 数据库的连接和关闭;


防止被封的策略:

一些网站实现了一些策略来禁止爬虫来爬取它们的网页。有的比较简单,有的相当复杂,下面是对于爬取这些网站的一些有用的建议:参考1

1)使用user agent池。也就是每次发送的时候随机从池中选择不一样的浏览器头信息,防止暴露爬虫身份;
2)设置download_delay下载延迟,数字设置为5秒,越大越安全;
3)禁止Cookie,某些网站会通过Cookie识别用户身份,禁用后使得服务器无法识别爬虫轨迹;
4)使用一个轮转IP池,例如免费的Tor project或者是付费的ProxyMesh;
5)使用大型分布式下载器,这样就能完全避免被封了,只需要关注怎样解析页面就行。一个例子就是Crawlera;

DOWNLOAD_DELAY = 5 #请求间隔时间,单位秒
RANDOMIZE_DOWNLOAD_DELAY = True #请求访问的等待时间变为随机(介于0.5 * DOWNLOAD_DELAY和1.5 *DOWNLOAD_DELAY之间)
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5' #使用user agent池
COOKIES_ENABLED = False #禁用cookies

 

Xpath提取方法:

//提取文本:使用text或者string
response.xpath("//div[@class='quote post']/text").extract(); //使用text
response.xpath("string(//div[@class='container']//div[@class='quote post'][1])").extract(); //使用string
response.xpath("//div[@id='name']").get();  //使用get方法提取单个数据,而不是返回数组,通常用于id

 

posted on 2017-07-22 11:09  飞哥100  阅读(253)  评论(0)    收藏  举报

导航