zl程序教程

您现在的位置是:首页 >  Python

当前栏目

Python之scrapy的post请求、日志和代理

2023-03-07 09:40:33 时间

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