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
浙公网安备 33010602011771号