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
testpost.py
import scrapy
import json
class TestpostSpider(scrapy.Spider):
name = 'testpost'
allowed_domains = ['']
# post请求 如果没有参数 那么这个请求将没有任何意义
# 所以start_urls 也没有用了
# parse方法也没有用了
# start_urls
#
# def parse(self, response):
# pass
# def parse(self, response):
# pass
def start_requests(self):
url
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
: 将屏幕显示的信息全部记录到文件中,屏幕不再显示,注意文件后缀一定是.logLOG_LEVEL
: 设置日志显示的等级,就是显示哪些,不显示哪些
3. 代理
1、settings.py
中,打开选项
DOWNLOADER_MIDDLEWARES = {
'postproject.middlewares.Proxy': 543,
}
2、middlewares.py
中使用代理
def process_request(self, request, spider):
request.meta['proxy']
return None