通常**通過 實現對某些表單字段(如資料或是登入介面中的認證令牌等)的預填充。
使用scrapy抓取網頁時,如果想要預填充或重寫像使用者名稱、使用者密碼這些表單字段,
可以使用formrequest, 可以使用 formrequest.from_response() 方法實現。
formrequest類
引數:
同request
formdata 表單引數(字典格式)
作用範圍:
模擬登陸
傳送post資料獲取響應
# -*- coding: utf-8 -*-
import scrapy
class
renrencomspider
(scrapy.spider):
name = 'renren.com'
allowed_domains = ['rneren.com']
# start_urls = ['']#其預設是get請求
# 檢查start_url
start_urls = ['']
# 因為start_urls預設是get請求,uj所以要重寫parse方法
defstart_requests
(self):
# 構建url
url = self.start_urls[0]
# 構建post_data資料
post_data =
# 預設有callback功能
yield scrapy.formrequest(url=url, formdata=post_data)
defparse
(self, response):
with open('wwww.html', 'wb') as f:
f.write(response.body)
pass
formrequest.from_response
引數:
response
formdata 表單引數(字典格式)
特性: 自動獲取表單並將表單資料提交
作用範圍:
填寫表單資料
# -*- coding: utf-8 -*-
import scrapy
class
renrenrtspider
(scrapy.spider):
name = 'renrenrt'
allowed_domains = ['renren.com']
start_urls = ['']
defparse
(self, response):
post_data=
# from_response需要乙個含有表單的響應,所以不需要重寫start_requests,
#在本函式中獲取到的response就含有登入表單,直接可以使用
yield scrapy.formrequest.from_response(
response=response,
callback=self.parse_login,
formdata=post_data,
)def
parse_login
(self, response):
with open('[email protected]', 'wb') as f:
f.write(response.body)
pass
scrapy框架 post請求方式
coding utf 8 import scrapy import json 1 sug的這個不能單獨使用 沒有響應 2 這個請求是乙個post請求 既然是post請求 引數就不能拼接 引數怎麼辦 scrapy的post請求 因為是post請求 那麼請求引數和請求資源路徑就是分開的 如果是分開的 那...
scrapy框架之遞迴解析和post請求
一.遞迴爬取解析多頁頁面資料 需求 將糗事百科所有頁碼的作者和段子內容資料進行爬取且持久化儲存 需求分析 每乙個頁面對應乙個url,則scrapy工程需要對乙個頁面對應的url一次發起請求,然後通過對應的解析方法進行作者和段子內容的解析.實現方案 1.將每乙個頁碼對應的url存放到爬蟲檔案的起始ur...
爬蟲 scrapy框架之遞迴解析和post請求
概要 需求 將糗事百科所有頁碼的作者和段子內容資料進行爬取切持久化儲存 需求分析 每乙個頁面對應乙個url,則scrapy工程需要對每乙個頁碼對應的url依次發起請求,然後通過對應的解析方法進行作者和段子內容的解析。實現方案 1.將每乙個頁碼對應的url存放到爬蟲檔案的起始url列表 start u...