• 爬虫入门基本原理


    爬虫基本原理

    爬虫定义:

    请求网站并提取数据的自动化程序

    爬虫基本流程:

    1. 发送请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。
    2. 获取响应内容是:如果服务器能正常响应,会得到一个Response,Response的内容便是所获取的页面内让那个,类型可以是HTML,Json字符串,二进制数据(如图片视频等类型。
    3. 解析内容:得到的尽可能是HTML,可以用正则表达式,网页解析库进行解析。可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。
    4. 保存数据:存为文本,也可以保存到数据库,或者指定的格式。

    Request包含什么:

    1. 请求方式:GET/POST
    2. 请求URL(统一资源定位符),一个网页文档,一张图片,一个视频
    3. 请求头:User-Agent、Host、Cookies等
    4. 请求体(POST请求时使用) -- form data,请求时额外携带的数据,如表单提交时的表单数据

    Response包含:

    1. 响应状态 -- 状态码
    2. 响应头:内容类型、内容长度、服务器信息、设置cookie
    3. 响应体:请求资源的内容如网页HTML、图片、二进制数据等。

    能抓什么数据:

    1. 网页文本:HTML, Json格式文本等
    2. 图片:获取到的是二进制文件,保存为图片格式
    3. 视频:同为二进制文件,保存为视频格式
    4. 其它:只要是能请求到的,都能获取

    解析方式:

    1. 直接处理
    2. json解析 -- 网页是ajax加载的
    3. 正则表达式
    4. BeautifulSoup解析库
    5. PyQuery解析库
    6. XPath解析库

    抓到的数据和浏览器看到的不一样:

    存在javascript渲染问题,即看到的网页是经过JS渲染过的网页,而直接请求的没有经过渲染得到的

    解决JavaScript渲染问题:

    1. 分析Ajax请求
    2. Selenium / WebDriver模仿JavaScript渲染
    3. Splash模拟JavaScript渲染
    4. PyV8/Ghost.py

    怎样保存数据

    1. 文本
    2. 关系型数据库:MySQL、Oracle、SQL Server
    3. 非关系型数据库:MongoDB、Redis等Key-Value的形式
    4. 二进制文件:图片视频音频等直接保存
  • 相关阅读:
    定位练习
    解决 java.lang.RuntimeException: Unable to start activity ComponentInfo{...}
    开发日志09
    Could not resolve all artifacts for configuration ':classpath'.
    本周总结
    AutoCompleteTextView自动补全(开发日志08)
    实现地图的建议搜索并显示 SuggestionSearch
    SuggestionSearch(开发日志07)
    android studio 查看函数的解释及说明
    初步确定页面(开发日志06)
  • 原文地址:https://www.cnblogs.com/DengSchoo/p/12668573.html
Copyright © 2020-2023  润新知