scrapy框架3 請求傳參

2022-07-28 00:39:13 字數 1293 閱讀 9707

當使用scrapy爬取的資料不在同一張頁面中(一次請求與資料後解析無法獲得想要的全部資料),需要請求傳參,在第一次解析時例項化item,將item傳遞,再次將請求到的資料解析後,封裝在item中。

關鍵點

yield scrapy.request(callback=self.parse_detail,url = detail_url,meta=)
例如在豆瓣中,電影封面頁獲取電影名稱,在詳情頁獲取電影簡介:

​ 先從起始網頁解析出電影名稱和詳情頁的url

​ 將得到的電影名稱封裝在item中

​ 將解析到的url作為下一次請求的引數,同時將item作為引數傳遞,作為下一次解析結果的容器

​ 最後將含有一組完整資料的item提交

import scrapy

import re

from douban.items import doubanitem

class dbspiderspider(scrapy.spider):

name = 'dbspider'

start_urls = ['']

def parse(self, response):

title = re.findall('title":"(.*?)"',response.text,re.s,)

url_list = re.findall('url":"(.*?)"',response.text,re.s)

for name,url in zip(title,url_list):

detail_url = url.replace('\\','')

item = doubanitem()

item['name'] = name

yield scrapy.request(callback=self.parse_detail,url = detail_url,meta=)

#如果解析第2、3、4...頁的資料,再次遞迴。。。

def parse_detail(self,response):

item = response.meta['item']

#name = response.xpath('//*[@id="content"]/h1/span[1]/text()').exrtact_fist()

instr = response.xpath('//*[@id="link-report"]/span[1]/text()').extract_first()

item['instr'] = instr

yield item

爬蟲 2020 10 10 scrapy請求傳參

使用場景 爬取的資料不在同一頁面中。也就是說爬取的目標可能在詳情url中,即深度爬取。1.第一步 實現方法 重寫乙個解析詳情頁的parse方法,在原始parse方法下,手動進行請求傳送中,加入meta引數,即可將item傳遞給解析詳情頁的parse方法。就是將不同頁面解析返回的item封裝到同乙個i...

scrapy請求傳參 BOSS反爬

思路總結 第一次請求就攜帶cookie,其實他之前有302重定向的如果網路卡的情況下你就會發現,cookie就是這個請求設定的,但是不知道為啥,最開始的請求隱藏掉了 首先boss加了反爬 是cookies的 爬取的內容為職位和職位描述 coding utf 8 import scrapy from ...

axios 請求傳參

let params params 1.get 請求不傳參 eg this.axios.get then res 2.get 請求攜帶引數 get 請求攜帶引數,攜帶斜槓後引數 例如id id this.axios.get 動態的id then res get 攜帶請求引數,問號後邊的引數 例如 e...