当前位置: 首页 > news >正文

python爬虫学习

系统shell
windowscmd、PowerShell 、gitbash
mac&linuxBourne Shell(sh)、Bourne Again Shell(bash)、C Shell(csh)、Z Shell(zsh)…

cmd 、PowerShell、Terminal 区别

类型说明
cmd命令执行窗口
PowerShell微软公司开发的任务自动化和配置管理框架。可以理解为 cmd 的升级版,或者说是其超集,类似 Linux 系统的 bash 一样,都是基于壳程序 shell
Terminal面向Windows10的新命令行程序,Terminal 集成了 Windows 上的 PowerShell、cmd、Windows Linux子系统(WSL)三大环境
#查看默认shell   环境变量 { $SHELL: /bin/bash }
echo $SHELL 
# 查看所有shell
cat /etc/shells
# 切换shell (bash)
$SHELL # or /bin/bash
#------------------------
# 切换 zsh
/bin/zsh

ubuntu

zsh

# 使用ifconfig
sudo apt install net-tools# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 zsh git curl
sudo apt install zsh git curl -y
# 安装python3
sudo apt install python3
# 查看python3 版本
python3 -V
# 安装python3-pip
sudo apt install python3-pip
# 查看pip3 版本
pip3 -V

配置国内镜像源
tsinghua

# 切换根目录并查看目录
cd / && ll
# 找到mnt(你windows上的磁盘磁盘位置),切换到d盘
cd /mnt/d
# 创建目录
mkdir python-test

scrapy

scrapy开源网络爬虫框架(快速、简单且可扩展)

简单来说:数据、网页爬取

在这里插入图片描述
配置环境变量

# /home/janis/.local/bin
# ubuntu 永久配置 【执行执行过chsh -s /bin/zsh,记得切换bash,命令行输入bash即可】
vim ~/.bashrc
# 最后一行输入 export PATH=$PATH:/home/janis/.local/bin
# 文件生效
source ~/.bashrc
# 验证 scrapy 命令是否可用
which scrapy
# 临时变量,命令行运行
export PATH=$PATH:/home/janis/.local/bin

google browser插件

XPath Helper

items.py

数据建模,提前规定好需要爬取的数据字段

示例
在这里插入图片描述

pipelines.py

不同的管道可以处理不同的爬虫数据,同一个管道也可以处理不同的爬虫数据,通过spider.name属性来区分。

  • 使用管道需要在settings.py中配置

  • 权重值小的优先执行,数值不建议大于1000

  • process_item方法是必须存在,且需要return出去

  • 爬虫和数据库交互常用的方法:open_spider(spider)、close_spider(spider)

    在爬虫开启的时候建立与数据库的连接,关闭时断开和数据库的连接
    open_spider(spider):爬虫开启执行一次
    close_spider(spider):爬虫关闭执行一次

在这里插入图片描述

中间件(middlewares.py)

下载中间件:header/cookie/代理ip(请求定制化) (长写,集成Selenium)
爬虫中间件

下载中间件

重写处理请求或响应方法
一般重写process_request 、process_response
process_request

 - 返回数据类型必须是None、request、response- 当每个request通过下载中间件时,该方法被调用
返回值说明
None无return,默认,该request对象传递给下载器,或通过引擎传递给其他权重低的process_request 方法
request把 request对象通过引擎交给调度器,不再通过其他权重低的 process_request 方法
response不在请求,把 response 返回给引擎

process_response
- 返回数据类型必须是request、response
- 当下载器完成http请求,传递响应给引擎的时候调用

返回值说明
request通过引擎交给调度器继续请求,不再通过其他权重低的 process_request 方法
response通过引擎传递给其他权重低的process_response方法

示例代码
process

settings.py

开启中间件/管道、redis配置、自定义配置(PROXY_LIST、USER_AGENT_LIST)等

常见问题

爬取请求报403报错:一般配置user-agent即可解决,难一点的可能需要配置cookie/代理ip地址。

Selenium

Selenium网页自动化执行

scrapy搭配使用:针对js动态加载数据展示页面进行数据爬取
一般源代码都有所需数据,能不集成就不集成,毕竟Selenium会耗费爬虫时间

pip3 install -U selenium

ubuntu

安装谷歌

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb # 报错,提示缺少依赖# 报错,提示缺少依赖(执行以下命令)
sudo apt install libvulkan1 
sudo apt --fix-broken install
sudo dpkg -i google-chrome-stable_current_amd64.deb

在这里插入图片描述
安装成功
在这里插入图片描述

# 安装 ChromeDriver
sudo -E pip3 install webdriver-manager

Logging

配置日志

具体实现
_get_handler()方法

import scrapy
import logging
logger = logging.getLogger(__name__) # 自定义记录器,__name__ 当前爬虫路径(myTestLog.spiders.mydomain2)
if os.path.exists("example2.log"): os.remove("example2.log") # 解决mode='w'无法实现问题
handler = logging.FileHandler('example2.log',mode='a',encoding='utf-8') # 输出到文件(只输出手动输入的日志)
handler.setLevel(logging.WARNING)
logger.addHandler(handler) class Mydomain2Spider(scrapy.Spider):name = "mydomain2"allowed_domains = ["docs.scrapy.org"]start_urls = ["https://docs.scrapy.org/"]def parse(self, response):logger.info(logger.level)logger.debug('This message should go to the log file---2')logger.info('So should this---2')logger.warning('And this, too---2')logger.error('And non-ASCII stuff, too, like Øresund and Malmö---2')
http://www.dtcms.com/a/494794.html

相关文章:

  • MySQL 8.0.29 及以上版本中 SSL/TLS 会话复用(Session Reuse)
  • 【项目-】Qt + QCustomPlot 实现频谱监测仪:四图联动、高频信号注入、鼠标交互全解析
  • 用于博客美化的测试(后面再更新)
  • 【一文了解】正则表达式
  • MySQL中表操作
  • 中国建设银行大学助学贷款网站网站备案对网站负责人的要求
  • 江门云建站模板东城企业网站开发
  • 使用Selenium Server 4连接已经运行的Firefox
  • 普蓝机器人PlanRobot-DR200:基于多传感融合的全天候电力巡检自主导航技术与实践
  • PHPCMS V9 自定义证书查询模块(Ajax+防刷+倒计时)
  • 一体化运维平台:当下运维体系的核心支柱
  • HarmonyOS后台任务管理:短时任务与长驻任务实战
  • Unity游戏基础-6(跨平台生成游戏作品,针对安卓教程)
  • Luminex xMAP技术原理与应用概述
  • Http基础协议和解析
  • 官方网站页面尺寸html网页设计作品中国传统文化
  • h5游戏免费下载:激射神经猫
  • 商业航天与数字经济(二):商业航天重构全球数字经济的底层逻辑
  • 免费社区建站系统vue做的商城网站
  • 中电金信:首个金融信创中试平台揭牌,架设国产软硬件落地应用的“高速通道”
  • 主流移动通信标准
  • SNK施努卡驱动电机自动生产线,转子+电机总成含EOL测试
  • 解决方案 - 宽带多通道同步采集系统
  • Nginx、uwsgi、uWSGI、WSGI和Django的关系
  • 牛童三国单机游戏Unity源码 免费开源
  • 团工作网站建设意见网站编辑做图片用什么不同
  • C#,VB.NET数组去重复,提取键名和重复键和非重复键
  • java建筑工地智能交互平台源码,智慧工地SaaS云平台,对现场人员、材料、机械、质量、安全进行高效管控
  • 【计算机网络笔记】计算机网络学习笔记1
  • 企业网站添加栏目龙华建网站多少钱