scrapy框架----post请求方式

# -*- 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)

猜你喜欢

转载自blog.csdn.net/qq_42336700/article/details/83661180
今日推荐