scrapy框架----post请求方式
程序员文章站
2022-05-07 12:09:24
...
# -*- 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 = ['https://fanyi.baidu.com/']
#如果直接的发送post请求 那么起始的url就没有用了
# start_urls = ['https://fanyi.baidu.com/sug']
#因为start_urls的路径不成立 那么parse方法就不能执行
# def parse(self, response):
# pass
def start_requests(self):
port_url = 'https://fanyi.baidu.com/sug'
word = input("请输入要翻译的单词:")
data = {
'kw':word
}
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)
推荐阅读
-
python通过get,post方式发送http请求和接收http响应的方法
-
MVC 5限制所有HTTP请求必须是POST方式
-
Android框架Volley使用之Post请求实现方法
-
python使用scrapy发送post请求的坑
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
PHP使用curl请求实现post方式上传图片文件功能示例
-
Android框架Volley使用:Post请求实现
-
Scrapy中的POST请求发送和递归爬取
-
thinkPHP5.1框架路由::get、post请求简单用法示例
-
在Restful风格中,axios请求中, method:“put“/‘delete‘/‘get‘/‘post‘四种方式