|
发表于 2017-5-13 11:07:27
|
显示全部楼层
一.内置属性
name: spider的名称,唯一要求
allowed_domains: 允许爬取的域名(范围)
start_urls: 初始的urls
custom_settings: 个性化设置,会覆盖全局的设置
crawler:抓取器,spider将绑定到它上面
setting: 配置实例,包括工程中所有的配置变量
logger: 日志实例
---------------------------------------------------------------------------------
二.方法
from_crawler(crawler, *args, **kwargs)
类方法,用于创建spiders
start_request
生成初始的request
make_request_from_url(url)
根据url生成一个request
parse(response)
用来解析网页的内容
log(message, [,level,component])
用来记录日志,这里请使用logger属性来记录(self.logger.info(""))
closed(reason)
当spider关闭的时候调用的方法
----------------------------------------------------------------------------------
extract()提取字符
extract_first(default='not found')提取第一个字符, default为无值时返回的值
----------------------------------------------------------------------------------
Pipeline.py
作用:1.验证 2.存储
要使用时请启用它
#ITEM_PIPELINES = {
# 'Zj.pipelines.ZjPipeline': 300#执行大小(顺序),
#}
----------------------------------------------------------------------------------
scrapy.http.Request()
参数
url,
callback,#回调函数
method='GET',
headers,
body,
cookies,
meta,
encoding='utf-8',
priority=0, #优先级1
don't_filter=False, #是否过滤url
errback #发生错误时调用的函数
scrapy.http.FormRequest()#用来登录的
def parse(self, response):
return scrapy.FormRequest.from_response(
response,
formdate={'username':'xxxx', 'password':'xxxx'},#用来提交的url的表单数据
callback=self.xxx
)
scrapy.http.Response()
urljoin(url)
-----------------------------------------------------------------------------------
对于不完全的xpath代码,无法解析到正确答案
对于相同的html片段(名称、属性等)若xpath代码(HTML名称)则会以数列的形式返回
图片的抓取
xpath('1.|''2.')表示抓取1或者2
setting设置
ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline':1}#设置使用的类
IMAGES_URL_FIELD = 'file_urls'#告诉spider图片链接存储在哪个属性中
IMAGES_STCRE = r'.'#指定图片存储的path
--------------------------------------------------------------------------------
代理IP的使用
#middlewares.py
实现方法:
1.scrapy.spidermiddlewares.SpiderMiddlewares
实现process_spider_output(response, result, spider):
request.meta['proxy'] = "url"
2.scrapy.downloadermiddleWares.DownloaderMiddleWares
实现prodess_request(request, spider):
setting设置
'scrapy.downloadermiddleWares.httpproxy.HttpProxyMiddleWares':110,
'设置的处理IP的Class'
---------------------------------------------------------------------------------
处理cookie
def start_request(self):
url = ""
cookies = {
"":"",
"":""
}
return [
scrapy.Request(url, cookies=cookies)
] |
|