python爬虫系列X--小知识汇总

2023-11-17

X系列不针对专门技术,只是一些辅助,内容零散添加。

1、为爬虫运行状态设置邮件提醒,使用python smtp、email模块完成。

from email.mime.text import MIMEText
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr,formataddr
import smtplib


msg = MIMEText('Python爬虫运行异常,异常信息为遇到HTTP 403','plain','utf-8')


def _format_addr(s):
    name,addr = parseaddr(s)
    return formataddr((Header(name,'utf-8').encode(), addr))


from_addr = 'zzz@126.com'
password = 'yyy'
to_addr = 'xxx@qq.com'
smtp_server  = 'smtp.126.com'


msg['From'] = _format_addr('一号爬虫 <%s>' %from_addr)
msg['To'] = _format_addr('管理员 <%s>' %to_addr)
msg['Subject'] = Header('一号爬虫运行状态','utf-8').encode()


server = smtplib.SMTP(smtp_server,25)
server.login(from_addr, password)
server.sendmail(from_addr,[to_addr],msg.as_string())

server.quit()


2、基础爬虫框架的5个模块:调度器、URL管理器、HTML下载器、HTML解析器和数据存储器。


3、Scrapy使用LIFO队列来存储等待的请求。简单的说,就是深度优先顺序 。



4、Pillow 是用来生成缩略图,并将图片归一化为JPEG/RGB格式,因此为了使用图片管道,你需要安装这个库。

Scrapy提供了一个简单的性能测试工具。其创建了一个本地HTTP服务器,并以最大可能的速度进行爬取。 该测试性能工具目的是测试Scrapy在您的硬件上的效率,来获得一个基本的底线用于对比。 其使用了一个简单的spider,仅跟进链接,不做任何处理。 scrapy bench即可进行测试。



5、传统验证码是输入型验证码,可以是数字、字母和汉字,不涉及含义分析,识别相对简单。需安装pytesseract、Pillow、tesseract-ocr(https://digi.bib.uni-mannheim.de/tesseract/)。

人工打码采用自动识别+人工识别的组合方式,

滑动验证码。



6、aiohttp就是requests的异步替代版,专门适合asyncio框架,否则使用同步框架,发挥不出asyncio的真正威力。

asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。

asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。



7、PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪的方法了。



8、Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom Filter通过极少的错误换取了存储空间的极大节省。



9、分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。



10、在windows上好用的http抓包工具就那么几款,网上大部分人都推荐的Fidder,我用过之后感觉Fidder和HTTP Analyzer都可以,两者都有一个共性问题,打开之后浏览器访问https网页有问题,因为证书的问题导致的,可以这么来用:浏览器访问网页的包就用浏览器自带的调试工具看即可,程序发出的包则用Fidder或HTTP Analyzer捕获即可。



11、反爬技巧

+ Headers,Referer域防盗链 

+ 代理IP,延时访问

+ www>m>wap

+ 模拟浏览器访问



12、robots.txt一般在网站根目录下有此文件,www.xxx.com/robots.txt。


13、sitemap

1、网站自己提供sitemap

2、用第3方工具获取:https://sitemap.webkk.net

https://www.jianshu.com/p/c194cace09c1

3、搜索引擎上输入:site www.xxx.com可以得到百度收录的网页数


使用python builtwith模块识别网站构建技术,pip install builtwith;import builtwith ;builtwith.parse('http://www.zhihu.com')

使用python-whois查询网站所有者,pip install python-whois;import whois;whois.whois(url)



14、爬虫使用总结

网络请求:urllib.request、requests、selenium、phantomjs、chromedriver

网页分析:re、beautifulsoup、lxml、xpath、css选择器。正则表达式和lxml的性能差不多,采用xpath性能最佳,BeautifulSoup性能最差。

存储库:文件(txt、csv、xls),MySQL,Mongodb,Redis

数据清洗靠Pandas,文本处理靠Gensim,图片处理靠Pillow



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python爬虫系列X--小知识汇总 的相关文章

随机推荐

  • idea开发中git合并的代码,

    方法一 将master主分支 合并到 子分支dev上 1 当前如果在dev分支上 先提交dev分支的代码到本地 然后推送到服务器 2 然后切换分支到master主分支上 先更新master主分支的代码到本地 然后主分支就是最新代码了 3 再
  • python 安卓模拟点击_Android后台模拟点击探索(附源码)

    工作中我们需要自制一套工具 其中遇到需要模拟点击事件的需求 类似按键精灵的功能 支持后台持续运行 满足触发条件时完成点击 经过一番探索 一共整理出两种不同的方案 AccessibilityService 和 adb shell命令 读者可自
  • Matlab中的c2d函数离散化

    把传递函数离散化 dsys c2d sys ts method 传函离散 num den tfdata dsys v 离散后提取分子分母 这里面的method有好多种 zoh 零阶保持 假设控制输入在采样周期内为常值 为默认值 foh 一阶
  • 【自动化测试】——robotframework实战(一)搭建环境

    一 前提准备 python 3 9 6 pip 下载 最新版本 setuptools 下载 最新版本 二 下载robotframework框架 管理员模式打开cmd 下载RF pip install robotframework 3 1 下
  • tomcat 配置域名

    Tomcat 配置域名 在windows中 首先找到conf下面的server xml 把Connector 标签中的端口改成80 然后把添加一个Host name为域名appBase为路径 如下 Engine 标签也是 最后在C盘 win
  • Android网络请求库的使用(okhttp、retrofit、rxjava)

    Android网络请求库的使用 前置工作 okhttp的基本使用 okhttp第一个demo okhttp的异步写法 更常见 GET请求中使用okhttp拼接参数 okhttp发起POST请求 拦截器第一个demo 打印请求的时间 retr
  • java并发编程实战

    Volatile变量 valatile是java提供的一种稍弱的同步机制 用来确保将变量的更新操作通知到其他线程 当把变量声明为volatile后 编译器与运行时都会注意到这个变量是共享的 因此不会将变量上的操作与其他内存操作一起重排序 1
  • 评测 AlibabaCloud 阿里云国际版 香港轻量云服务器的性能和网络怎么样

    此次站长带来的是 AlibabaCloud 阿里云国际版 香港轻量云服务器的评测 配置为512M内存 1核 20G云硬盘 官方网站 https www alibabacloud com 国际版 https www aliyun com 国内
  • AST混淆 二进制/八进制/十六进制数值及十六进制字符串,Unicode字符串还原

    二进制 八进制 十六进制数值及十六进制字符串 Unicode字符串还原插件 const simplifyLiteral NumericLiteral node if node extra 0 obx i test node extra ra
  • uniapp解决rich-text 富文本图片过大超出问题

    问题 如图所示 图片过大超出会超出手机屏幕 解决办法
  • 第十一届蓝桥杯 ——七段码

    题目描述 小蓝要用七段码数码管来表示一种特殊的文字 上图给出了七段码数码管的一个图示 数码管中一共有 7 段可以发光的二极管 分别标记为 a b c d e f g 小蓝要选择一部分二极管 至少要有一个 发光来表达字符 在设计字符的表达时
  • python seaborn 散点图矩阵_python数据可视化之seaborn

    seaborn importmatplotlib as mplimportmatplotlib pyplot as pltimportnumpy as npimportpandas as pd 解决坐标轴刻度负号乱码 plt rcParam
  • iOS开发问题之:Xcode打包失败IPA processing failed

    打包发现失败了 提示IPA processing failed 查看日志 IDEDistribution standard log image png 发现是因为项目中使用的SDK支持i386 x86 86这个架构 猜测是iOS13强制不支
  • 代码检视/代码审查/Code Review

    目录 一 代码检视的目的 二 代码检视前的准备 三 代码检视九句箴言 四 代码检视checklist 经验检查项 五 代码检视结果度量 六 代码质量衡量指标 七 高质量代码 一 代码检视的目的 代码检视是一种用来确认方案设计和代码实现的质量
  • Kotlin之高阶函数

    一 定义高阶函数 高阶函数和Lambda的关系密不可分 在Lambda编程的基础知识 使用的一些与集合相关的函数式API用法 如map filter函数等 又比如Kotlin的标准函数 如run apply函数等 这几个函数都有一个共同的特
  • 用python进行FamaMacBeth回归

    from linearmodels import FamaMacBeth import pandas as pd import numpy as np 生成所用面板数据集 该数据集在不同的日期有不同的个体 期望回归模型 Y 3 6 X1 4
  • 前端例程20221227:下雪动画

    演示 动图太大了不好上传 这里就放个静态图吧 实际上这里是雪花从上到下飘落的效果 代码
  • 分集 复用 多址

    1 分集 是在多条独立路径上传输相同的数据 接收端通过分集合并技术 抵抗信道衰落 提高传输可靠性 降低误码率 复用 是在多条独立路径上传输不同数据 充分利用系统资源 提高系统容量 即总数据率 2 分集 是一个信号通过多条路径送达接收端 好处
  • UVA-11212 编辑书稿 题解答案代码 算法竞赛入门经典第二版

    GitHub jzplp aoapc UVA Answer 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 这道题目在书上的 迭代加深搜索 章节出现 即是采用迭代加深搜索的方法来做 但是咋一看题目 我认为用广度优先搜索也合适 因为题目要求
  • python爬虫系列X--小知识汇总

    X系列不针对专门技术 只是一些辅助 内容零散添加 1 为爬虫运行状态设置邮件提醒 使用python smtp email模块完成 from email mime text import MIMETextfrom email header i