Selector 是 Scrapy的选择器器,基于lxml构建,⽀支持xpath, css, 正则表达式匹配
scrapy shell https://bbs.hupu.com/gear
result = response.selector.xpath("//a[@class='truetit']/text()")
type(result)
result = response.selector.xpath("//a[@class='truetit']/text()").extract()
result
SelectorList 和 Selector都可继续调⽤用xpath()和css() ⽅方法
result = response.selector.xpath("//div[contains(@class, 'author')]")
type(result)
result.xpath('./a[1]/text()').extract()
result.xpath('./a[1]/text()').extract_first()
result.xpath('./a[1]/text()')[0]
result.xpath('./a[3]/text()').extract()
result.xpath('./a[3]/text()').extract()[0]
result.xpath('./a[3]/text()').extract_first()
extract()[0] 与 extract_first()区别
result = response.css('.author.box').xpath('./a[2]/text()').extract()
result = response.css('.endreply.box a::text').extract()
result = response.css('.endreply.box a::attr(href)').extract()
result = response.css('.author.box').xpath('./a[2]/text()').re('(.?)-.?-')
Spider
1、name:爬⾍虫的名字。
2、allowed_domains:允许爬取的域名,不不在此范围的链接不不会被跟进爬取。
3、start_urls:起始URL列列表,当我们没有重写start_requests()⽅方法时,就会从这个列列表开始
爬取。
4、custom_settings:⽤用来存放蜘蛛专属配置的字典,这⾥里里的设置会覆盖全局的设置。
5、crawler:由from_crawler()⽅方法设置的和蜘蛛对应的Crawler对象,Crawler对象包含了了很
多项⽬目组件,利利⽤用它我们可以获取项⽬目的配置信息,如调⽤用crawler.settings.get()⽅方法。
6、settings:⽤用来获取爬⾍虫全局设置的变量量。
7、start_requests():此⽅方法⽤用于⽣生成初始请求,它返回⼀一个可迭代对象。该⽅方法默认是使⽤用
GET请求访问起始URL,如果起始URL需要使⽤用POST请求来访问就必须重写这个⽅方法,发送
POST请求使⽤用FormRequest⽅方法
8、parse():当Response没有指定回调函数时,该⽅方法就会被调⽤用,它负责处理理Response对
象并返回结果,从中提取出需要的数据和后续的请求,该⽅方法需要返回类型为Request或Item
的可迭代对象(⽣生成器器当前也包含在其中,因此根据实际需要可以⽤用return或yield来产⽣生返回
值)。
9、closed():当蜘蛛关闭时,该⽅方法会被调⽤用,通常⽤用来做⼀一些释放资源的善后操作。
Downloader Middleware
1、调度器器将Request发给Downloader下载之前,可以对Request进⾏行行修改
process_request(request, spider)
2、下载后⽣生成的Response发给Spider之前,可以对Response进⾏行行修改
process_response(request, response, spider)
3、Downloader或process_request()⽅方法异常
process_exception(request, exception, spider)
Pipeline
Image pipeline
get_media_requests(self,item, info):
ImagePipeline根据image_urls中指定的url进⾏行行爬取,可以通过get_media_requests为每个
url⽣生成⼀一个Request。如:
for image_url in item[‘image_urls’]:
self.default_headers[‘referer’] = image_url
yield Request(image_url, headers=self.default_headers)
item_completed(self, results, item, info):
图⽚片下载完毕后,处理理结果会以⼆二元组的⽅方式返回给item_completed()函数。这个⼆二元组定义
如下:
(success, image_info_or_failure)
其中,第⼀一个元素表示图⽚片是否下载成功;第⼆二个元素是⼀一个字典。如:
def item_completed(self, results, item, info):
image_paths = [x[‘path’] for ok, x in results if ok]
if not image_paths:
raise DropItem(“Item contains no images”)
item[‘image_paths’] = image_paths
return item
day09 scrapy的用法 和
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...