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
: 将屏幕显示的信息全部记录到文件中,屏幕不再显示,注意文件后缀一定是.logLOG_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
相关文章
- python 来查 肯德基 address
- python 批量修改文件名
- 炸裂!上手三天,就在开发板上播放BadApple, 还是Python香
- [Python从零到壹] 一.为什么我们要学Python及基础语法详解
- 稳固执行计划
- HaaS轻应用(Python):连接物联网平台并控制设备硬件
- 后端人员使用apipost快速生成接口文档
- 使用 Python 脚本轻松剪辑/分割大视频
- Python-Python入门
- Python 03:Python字符串
- python——字符串和python
- 【Python】Python注释02
- Python python对象 deque
- python:Python for .NET
- python 安装influxdb-python
- [Python] Python库、Python的GIS库、Python的RS库
- 【python学习】python判断语句
- python学习(一)——安装python
- 【python】python ^异或操作
- 【python学习】python字符串类型