Python3之网络爬虫<0>初级
一 知识域/学习路径
1.1 初级阶段
java: net(网络编程)、IO、多线程(含:线程池)、正则表达式、集合、JDBC/数据库等
python: urllib.request
NodeJs/JavaScript: http
1.2 中级阶段
java: Jsoup(优势:HTML DOM解析)、HttpClient(优势:下载/IP代理等)、OKHttp、HTML Parser(优势:解析)、JavaScript/HTML(函数、JSON、Ajax、JacaScript DOM)等
NodeJs/JavaScript: express
1.3 进阶
java: web自动化测试框架selenium【WebDriver/ChromeDriver】(优势:下载/解析)
python: scrapy、web自动化测试框架selenium(WebDriver/ChromeDriver)
NodeJs/JavaScript: web自动化测试框架(PhantomJS/ selenium)
1.4 高级阶段
java: Heritrix网络爬虫框架
一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源。其最出色之处在于它良好的可扩展性,方便用户实现自己的抓取逻辑。
1.5 涉及经验
计算机网络(网络编程/ HTTP&TCP协议)
HTTP报文
报文头:
请求方法: GET/POST .etc
遵循协议: HTTP / HTTPS .etc
请求体
网络抓包与调试: Chrome开发者工具、Fiddle、Postman等
IP代理
文件操作
数据库 / JDBC
数据结构(栈/队列/List/Set/Map/深度优先/广度优先等)
Cookie/Session
反爬虫机制、模拟登陆
多线程编程
线程池/多线程爬行
分布式爬虫
可能涉及技巧:JS注入、模拟鼠标滑动、验证码识别(英文字母/数字/汉字/物品识别等)、延时请求(降低请求频率)等
可能涉及语言:Python、Java、JavaScript、HTML、CSS等
网页正文提取方法:Jsoup(基于 HTMLO DOM解析树)等、Html2Article(基于行块分布函数的通用正文抽取算法)
二 入门级演示
2.1 Python简易Demo
由于Python3合并URLib与URLlib2统一为URLlib,Python3将urlopen方法放在了urllib.request对象下。
官方文档:https://docs.python.org/3/library/urllib.request.html#module-urllib.request
在实现爬取网页过程中,屡次执行以下脚本:
#coding:UTF-8
import random;
import urllib.request;# 不推荐使用 import urllib
rawdata =
urllib.request.urlopen('http://www.111cn.net/phper/python/68713.htm').read(); file = open("testfile","w+");
file.write(str(rawdata));
三 参考文档
[1] Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
[2] 基于行块分布函数的通用正文抽取算法.陈鑫.哈尔滨工业大学社会计算与信息检索研究中心
Python3之网络爬虫<0>初级的更多相关文章
- python3编写网络爬虫20-pyspider框架的使用
二.pyspider框架的使用 简介 pyspider是由国人binux 编写的强大的网络爬虫系统 github地址 : https://github.com/binux/pyspider 官方文档 ...
- python3编写网络爬虫18-代理池的维护
一.代理池的维护 上面我们利用代理可以解决目标网站封IP的问题 在网上有大量公开的免费代理 或者我们也可以购买付费的代理IP但是无论是免费的还是付费的,都不能保证都是可用的 因为可能此IP被其他人使用 ...
- Python3编写网络爬虫11-数据存储方式四-关系型数据库存储
关系型数据库存储 关系型数据库是基于关系模型的数据库,而关系模型是通过二维表保存的,所以它的存储方式就是行列组成的表.每一列是一个字段,每一行是一条记录.表可以看作某个实体的集合,而实体之间存在联系, ...
- 【C++&爬虫】C++实现网络爬虫&socket初级教程
2019年了,发现以前的很多教程都不能用了. 我自己写的socket发给服务器总是返回301错误——资源永久转移.很多教程都是这样,困扰了我很久. 终于我发现了一篇能用的爬虫代码,参考MSDN以及众多 ...
- python3编写网络爬虫23-分布式爬虫
一.分布式爬虫 前面我们了解Scrapy爬虫框架的基本用法 这些框架都是在同一台主机运行的 爬取效率有限 如果多台主机协同爬取 爬取效率必然成倍增长这就是分布式爬虫的优势 1. 分布式爬虫基本原理 1 ...
- python3编写网络爬虫22-爬取知乎用户信息
思路 选定起始人 选一个关注数或者粉丝数多的大V作为爬虫起始点 获取粉丝和关注列表 通过知乎接口获得该大V的粉丝列表和关注列表 获取列表用户信息 获取列表每个用户的详细信息 获取每个用户的粉丝和关注 ...
- python3编写网络爬虫21-scrapy框架的使用
一.scrapy框架的使用 前面我们讲了pyspider 它可以快速的完成爬虫的编写 不过pyspider也有一些缺点 例如可配置化不高 异常处理能力有限对于一些反爬虫程度非常强的网站 爬取显得力不从 ...
- python3编写网络爬虫19-app爬取
一.app爬取 前面都是介绍爬取Web网页的内容,随着移动互联网的发展,越来越多的企业并没有提供Web页面端的服务,而是直接开发了App,更多信息都是通过App展示的 App爬取相比Web端更加容易 ...
- python3编写网络爬虫15-Splash的使用
Splash是一个JavaScript渲染服务 是一个带有HTTP API的轻量级浏览器 同时对接了python的Twisted 和QT库 利用它可以实现对动态渲染页面的抓取 功能介绍 1.异步方式处 ...
随机推荐
- jmeter属性与变量
jmeter属性定义在jmeter.properties 文件中 更多详细说明: Getting Started - Configuring JMeter 属性是全局的,常用来定义一些jmeter使用 ...
- maven依赖有一个步长原则 如果a 对 b和c都有依赖 如果b的步长近则使用b的
maven依赖有一个步长原则 如果a 对 b和c都有依赖 如果b的步长近则使用b的
- Spark RDD操作之Map系算子
在linux系统上安装solrCloud 1.依赖: JRE solr7.3 需要 java1.8 独立的zookeeper服务 ,zookeeper安装请参考: http://zookeeper.a ...
- 挂载文件系统出现"kernel panic..." 史上最全解决方案
问:挂载自己制作的文件系统卡在这里: NET: Registered protocol family 1 NET: Registered protocol family 17 VFS: Mounted ...
- 洛谷 P4151 [WC2011]最大XOR和路径 解题报告
P4151 [WC2011]最大XOR和路径 题意 求无向带权图的最大异或路径 范围 思路还是很厉害的,上午想了好一会儿都不知道怎么做 先随便求出一颗生成树,然后每条返祖边都可以出现一个环,从的路径上 ...
- docker的memory和cpu资源限制
这里仅针对docker本身,不涉及任何编排工具compose或者k8s等. 按照惯例,官文撸起来. 重要的部分是一些选项,用来限制资源大小. Memory Most of these options ...
- java date总结
Java 8 中 Date与LocalDateTime.LocalDate.LocalTime互转 Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant ...
- 【loj3044】【zjoi2019】Minimax
题目 描述 给出一颗树,定义根节点1的深度为1,其他点深度为父亲深度+1: 如下定义一个点的点权: 1.叶子:为其编号:2.奇数深度:为其儿子编号最大值:3.偶数深度:为其儿子编号最小值: ...
- 【LOJ#6279】数列分块3
题目大意:维护 N 个数组成的序列,支持两种操作:区间加.区间查询某个值的前驱(小于该值的最大值,若无前驱,输出-1). 题解1:可以像分块2一样,维护每个块内元素的一个有序序列,每次查询时二分查找即 ...
- Java: md5 加密中文 & 注意编码
今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解. 后面网上搜索了一下,才知道是[编码]的问题. 以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下, ...