• 《实战Python网络爬虫》- 感想


    端午节假期过了,之前一直在做出行准备,后面旅游完又休息了一下,最近才恢复状态。

    端午假期最后一天收到一个快递,回去打开,发现是微信抽奖中的一本书,黄永祥的《实战Python网络爬虫》。

    去各大网站搜了一下这个人,没有名气,去网购平台看了他别的书的书评,整体来说,书都是拼凑的。。。

    但是既然书到手了,不妨翻开看看,刚好最近没有什么头绪,又偏头痛。花了几个半天整体翻了一下这本书,感觉是有点浅显的。

    我之前用java写过爬虫,感觉比较难的还是反爬虫这块。这本书,我先看了第一个实战项目,51job的,运行了代码之后发现,哦,好吧,这个网站,貌似没有反爬虫机制?

    其实具体的爬取内容的方法各个网站也是差不多的。主要还是反爬虫这块。但是书上内容不多,只有一个章节。

    个人觉得,对于爬虫新手,看一看每章的小结,还是很能增长一些见识的。更深入的技术,大概这本书是不能提供的。

    后续有时间,我大概会摘录一些小结放到这里来吧~虽然没什么人看这里。

    网络爬虫

    定义:自动抓取网络信息

    分类

    • 通用网络爬虫/全网爬虫:主要为门户站点搜索引擎大型网站服务采集数据
    • 聚焦网络爬虫/主题网络爬虫:选择性地爬取主题相关的页面
    • 增量式网络爬虫:对已下载网页采取增量式更新/只爬取新产生或已经发生变化的网页
    • 深层网络爬虫:内容不能通过静态URL获取/隐藏在搜索表单后/只有用户提交一些关键词才能获得的页面

    网站分析

    1. 找出数据来源:Doc、XHR、JS
    2. 找出数据所在请求,分析请求链接、请求方式、请求参数
    3. 确定参数来源:固定可选值、通过别的请求生成、经过JS处理、特殊值

    抓包工具:Fiddler

    爬虫库:

    • urllib
    • requests:语法简单,兼容python2和3
    • requests_html:提供了数据清洗、ajax数据动态渲染

    爬虫缓存:requests_cache

    requests_cache.install_cache(backend='memory')
    

    存储机制

    • memory:每次程序运行都会将缓存以字典形式保存在内存中
    • sqlite:默认存储机制
    • redis:通过redis模块实现数据库的读写
    • mongo:通过pymongo模块实现数据库的读写

    网页操控与数据爬取Selenium

    手机App数据爬取Appium

    验证码识别

    • 人工识别
    • ocr
    • 调用第三方平台API:在线人员、人工智能

    数据清洗

    1. 字符串操作:截取、替换、查找、分割
    2. 正则表达式
    3. 第三方模块/库BeautifulSoup

    分布式爬虫

    并发库concurrent.futures:ThreadPoolExecutor和ProcessPoolExecutor

    反爬虫技术

    1. 基于用户请求的Headers→固定属性+可变属性
    2. 基于用户操作网站的行为→代理IP
    3. 基于网站目录数据加载→模拟ajax请求
    4. 基于数据加密
    5. 基于验证码识别
    6. 基于请求参数
    7. 基于cookies→构建cookies池、代理IP、动态构建cookies、利用浏览器获取cookies
  • 相关阅读:
    [java学习点滴]PropertiesUtil 读取properties配置帮助类
    Java快速向数据库中插入大量数据 比如10万条以上
    Java通过IO流输入输出 向文件中存入大量三个属性的值,并通过验证前两个属性输出第三个属性
    JSON 的使用方法
    jQuery easyUI id选择器 类选择器 标签选择器 属性选择器 及DOM对象和jQuery相互之间的转换
    解决request中文乱码问题
    jsp内置对象request使用方法2
    jsp内置对象request的使用方法
    easyui-dialog对话框练习
    使用combobox下拉列表框实现省 市 县 的三级联动
  • 原文地址:https://www.cnblogs.com/angelica-duhurica/p/11014879.html
Copyright © 2020-2023  润新知