1. 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所携带的数据,这是一个字典
使用
# 创建项目 scrapy startproject scrapy_post cd scrapy_post/scrapy_post/spiders scrapy genspider testpost http://fanyi.baidu.com/
testpost.py
import scrapy import json class TestpostSpider(scrapy.Spider): name = 'testpost' allowed_domains = ['fanyi.baidu.com'] # post请求 如果没有参数 那么这个请求将没有任何意义 # 所以start_urls 也没有用了 # parse方法也没有用了 # start_urls = ['http://fanyi.baidu.com/'] # # def parse(self, response): # pass # 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 obj = json.loads(content, encoding='utf-8') print(obj)
2. 日志信息和日志等级
日志级别:
CRITICAL:严重错误
ERROR: 一般错误
WARNING: 警告
INFO: 一般信息
DEBUG: 调试信息
默认的日志等级是DEBUG ,只要出现了DEBUG或者DEBUG以上等级的日志 ,那么这些日志将会打印
settings.py文件设置:
默认的级别为DEBUG,会显示上面所有的信息。在配置文件中 settings.py
LOG_FILE : 将屏幕显示的信息全部记录到文件中,屏幕不再显示,注意文件后缀一定是.log
LOG_LEVEL: 设置日志显示的等级,就是显示哪些,不显示哪些
3. 代理
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