scrapy的post请求
1)重写start_requests方法:
def start_requests(self)
2) start_requests的返回值:
scrapy.FormRequest(url=url, headers=headers, callback=self.parse_item, formdata=data)
url: 要发送的post地址
headers:可以定制头信息
callback: 回调函数
formdata: post所携带的数据,这是一个字典
1、创建项目
2、找到百度翻译接口
3、创建爬虫文件
testpost.py
import scrapy
import json class TestpostSpider(scrapy.Spider): name = 'testpost' allowed_domains = ['https://fanyi.baidu.com/sug'] # post请求 如果没有参数 那么这个请求将没有任何意义 # 所以start_urls 也没有用了 # parse方法也没有用了 # start_urls = ['https://fanyi.baidu.com/sug/'] # # def parse(self, response): # pass
# 使用方法 def start_requests(self): url = 'https://fanyi.baidu.com/sug' # 参数 data = { 'kw': 'final' }
# 发出请求 yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse_second) # 获取响应数据 def parse_second(self,response): content = response.text
# 使用json解析字符串变成对象
obj = json.loads(content,encoding='utf-8') print(obj)
代理
1)到settings.py中,打开一个选项
DOWNLOADER_MIDDLEWARES = {
'postproject.middlewares.Proxy': 543,
}
2)middlewares.py中间件 代理的设置
def process_request(self, request, spider):
request.meta['proxy'] = 'https://113.68.202.10:9999'
return None