# -*- 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)
scrapy框架----post请求方式
猜你喜欢
转载自blog.csdn.net/qq_42336700/article/details/83661180
今日推荐
周排行