首页 > 技术文章 > 爬虫之概述

chancey 2019-09-07 09:36 原文

概述

抓取网络资源的机器人

一、概述

1.定义

网络蜘蛛、网络机器人、抓取网络资源的程序

其实就是用python程序模拟人为点击浏览器并访问网站,而且模仿的月逼真越好

2. 目的

  • 获取大量数据,用来做数据分析
  • 公司项目的测试数据,公司业务所需数据

企业获取数据的方式

  • 公司自有数据
  • 第三方品台购买(数据堂、贵阳大数据交易所)
  • 爬虫爬取数据(第三方平台没有或者价格太高)

3. 优势

  • Python:请求模块、解析模块丰富成熟,强大的Scrapy网络爬虫框架
  • PHP:对线程、异步支持不太好
  • JAVA:代码笨重、代码量大
  • C/C++:虽然效率高,但是代码成型慢

4. 分类

  • 通用网络爬虫(搜索引擎使用,遵循robots协议)

    robots协议:网站通过robots协议告诉搜索引擎哪些页面也可抓,哪些不能抓

    通用网络爬虫需要遵循robots协议(君子协议)

  • 聚焦网络爬虫:自己写的爬虫程序

二、编码问题

万能方法

import requests
html = requests.get(url="http:www.cnblogs.com/chancey/")
html = html.content.decode("utf-8")

在Windows上新建的任何数据文件都是国标编码,而在Linux上创建的文件都是utf-8编码

互转方法

在Windows上

在Linux上

import csv
with open("test.csv", "w") as f:
    writer = csv.writer(f)
    # 写一行(列表嵌套)
    writer.wrterow(["小明", 25])
    # 写多行(列表里面嵌套元组)
    writer.wrterows([("小红", 18), ("小黑", 20), ("小花", 36)])
import csv

with open("test.csv", "w") as f:
    writer = csv.writer(f)

    # 写一行
    writer.writerow(["小明", 25])
    writer.writerow(["小小", 7])

    # 写多行
    writer.writerows([("小红", 18), ("小黑", 20), ("小花", 36)])
    writer.writerows([("小瓜", 18), ("小洋", 20), ("小菲", 36)])

如果将这段代码cv到Windows机器上,会出现如下的情况

莫名其妙会出现空行,改动代码,即添加参数即可

with open("demo.csv", "w", newline="") as f

三、持久化

四、基本思路

class Spider(object):
    def __init__ (self:)
    	# 初始化所有变量
    	pass
    def get_page (self):
        # 获取源码
        pass
    def parse_page (self):
        # 解析源码
        pass
    def write_page (self):
        # 保存数据
        pass
    def main (self):
        # 主函数
        pass
if __name__ == "__main__":
    spider = Spider()
    spider.main()

推荐阅读