# -*- 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,特殊字元需要轉碼,空格變成 ...