记忆碎片之scrapy中使用logging模快

在 scrapy中使用logging

# settings.py
LOG_LEVEL="WARNING"	# 设置日志显示的等级
LOG_FILE="./a.log"	# 设置日志保存的位置,设置后界面不会显示日志内容
# spider.py
import logging
import logging

"""
logging.basicConfig函数各参数:
    filename: 指定日志文件名
    filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
    format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
    %(levelno)s: 打印日志级别的数值
    %(levelname)s: 打印日志级别名称
    %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
    %(filename)s: 打印当前执行程序名
    %(funcName)s: 打印日志的当前函数
    %(lineno)d: 打印日志的当前行号
    %(asctime)s: 打印日志的时间
    %(thread)d: 打印线程ID
    %(threadName)s: 打印线程名称
    %(process)d: 打印进程ID
    %(message)s: 打印日志信息
    datefmt: 指定时间格式,同time.strftime()
    level: 设置日志级别,默认为logging.WARNING
    stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,
            默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
# """
# logging.basicConfig(level=logging.INFO,
#                     format='%(asctime)s %(thread)d %(threadName)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
#                     datefmt='%a, %d %b %Y %H:%M:%S', filename="logfile_path", filemode='w')
# 如果启用了上面的配置,界面就不会显示内容了
# logger.warning会显示
# 实例化的logger可以在任何.py文件中调用,并显示属于哪个文件的logging,根据__name__显示
logger = logging.getLogger(__name__)	

if __name__ == '__main__':
    # logger.debug('This is debug message')
    logger.info('This is info message')
    # logger.warning('This is warning message')

当xpath时,td是tr里面的最后一个

# 使用last()定位位置
tr.xpath("./td[last()]/text()").extract_first()
# 使用条件定位(可以是标签内的文本)
next_url = response.xpath("//a[text()='下一页']/@href").extract_first()
# 当需要的N个标签都包含class="i"时定位
div_list = response.xpath("//div[contains(@class,'i')]"
for div in div_list:
	pass

程序根据完整url,将获取到的不完整的url补充完整

import urllib

# 		urljoin会根据完整的url,将不完整URL补充完整
#									完整的       刚提前的不完整URL
item["href"] = urllib.parse.urljoin(response.url,href)

对当前获取到的URL解码,切片,取出需要的那一部分

import requests
# unquote()就是解码的函数
item["img_list"] = [requests.utils.unquote(i).split("src=")[-1] for i in item["img_list"]]

保存MongoDB

在这里插入图片描述

如果翻页的时候,遇见JavaScript:;的时候,就查看网页源代码里面的JavaScript数据,里面可能有总页码,当前页码等数据,要仔细查看一下,用正则拿出来使用

在这里插入图片描述

查看cookie的传递

在这里插入图片描述

下载中间件

在这里插入图片描述

模拟登录之发送post请求

在这里插入图片描述

模拟登录之自动登录

在这里插入图片描述

item数据重复,在传值的时候深拷贝一下,数据就不会覆盖了,在for循环里面实例化item

from copy import deepcopy
for i in url_list:
    item={}
# 注意:	meta={"item":deepcopy(item)}

图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值