scrapy框架 post請求方式

2021-08-30 17:57:05 字數 1308 閱讀 2869

# -*- coding: utf-8 -*-

import scrapy

import json

'''1 sug的這個不能單獨使用 --》沒有響應

2 這個請求是乙個post請求 既然是post請求 引數就不能拼接 --》引數怎麼辦

scrapy的post請求:

因為是post請求 那麼請求引數和請求資源路徑就是分開的

如果是分開的 那麼單獨的請求資源路徑就不能直接訪問

如果不能直接訪問 那麼起始的url就不成立(start_url 不能寫)

如果起始的url不成立 所以parse方法就不能執行 (parse 不能寫)

怎麼辦?

重寫start_requests方法

在該方法中 定義url和data

yield scrapy.formrequest(url,formdata,callback,headers)

url:相當於起始的url

formdata:引數

callback:相當於起始的url執行後的方法 eg:parse

headers:一般不寫 因為headers裡面的東西 都可以在settings中進行編寫

'''class fanyispider(scrapy.spider):

name = 'fanyi'

allowed_domains = ['']

#如果直接的傳送post請求 那麼起始的url就沒有用了

# start_urls = ['sug']

#因為start_urls的路徑不成立 那麼parse方法就不能執行

# def parse(self, response):

# pass

def start_requests(self):

port_url = 'sug'

word = input("請輸入要翻譯的單詞:")

data =

yield scrapy.formrequest(url=port_url,callback=self.parse_detial,formdata=data)

def parse_detial(self,response):

content = response.text

obj = json.loads(content)

str = json.dumps(obj,ensure_ascii=false)

with open('fanyi.json','w',encoding='utf-8')as fp:

fp.write(str)

scrapy 框架之post請求

通常 通過 實現對某些表單字段 如資料或是登入介面中的認證令牌等 的預填充。使用scrapy抓取網頁時,如果想要預填充或重寫像使用者名稱 使用者密碼這些表單字段,可以使用formrequest,可以使用 formrequest.from response 方法實現。formrequest類 引數 同...

scrapy框架之遞迴解析和post請求

一.遞迴爬取解析多頁頁面資料 需求 將糗事百科所有頁碼的作者和段子內容資料進行爬取且持久化儲存 需求分析 每乙個頁面對應乙個url,則scrapy工程需要對乙個頁面對應的url一次發起請求,然後通過對應的解析方法進行作者和段子內容的解析.實現方案 1.將每乙個頁碼對應的url存放到爬蟲檔案的起始ur...

post請求contentType編碼方式

contenttype定義 定義http htttps 傳送資訊到伺服器的內容編碼型別,用於表名資料流的型別,伺服器中需要根據不同的資料流形式解析資料。常用型別 原生form的提交方式,將資料變成鍵值對的形式各對之間使用 連線如key value key2 value2,特殊字元需要轉碼,空格變成 ...