爬虫之概述
概述#
抓取网络资源的机器人
一、概述#
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()
作者:ChanceySolo
出处:https://www.cnblogs.com/chancey/p/11479244.html
版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!