网络爬虫是当下非常火的工作岗位,有不少人想要入行爬虫领域,想必大家都知道,学习爬虫除了开发语言以外,框架的选择也是很重要的。比如说如果是小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。其中Python不仅是非常适合网络爬虫的编程语言,拥有各种各样的框架,对网络爬虫有着非常重要的作用,那么Python相关爬虫的框架有哪些,我们就来简单的了解下。
1、scrapy框架,是一套比较成熟的Python爬虫框架,是使用Python开发的快速、高层次的信息爬取框架,可以高效的爬取web页面并提取结构化数据。这是很多人会选择的框架。这里简单的示例下这个框架在爬虫里面是怎么实现的。
#! -*- encoding:utf-8 -*-
import base64
import sys
import random
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
if PY3 and isinstance(bytes_or_str, str):
input_bytes = bytes_or_str.encode('utf8')
else:
input_bytes = bytes_or_str
output_bytes = base64.urlsafe_b64encode(input_bytes)
if PY3:
return output_bytes.decode('ascii')
else:
return output_bytes
class ProxyMiddleware(object):
def process_request(self, request, spider):
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "username"
proxyPass = "password"
request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
# [版本>=2.6.2](https://docs.scrapy.org/en/latest/news.html?highlight=2.6.2#scrapy-2-6-2-2022-07-25)无需添加验证头,会自动在请求头中设置Proxy-Authorization
# 版本<2.6.2 需要手动添加代理验证头
# request.headers['Proxy-Authorization'] = 'Basic ' + base64ify(proxyUser + ":" + proxyPass)
# 设置IP切换头(根据需求)
# tunnel = random.randint(1,10000)
# request.headers['Proxy-Tunnel'] = str(tunnel)
# 每次访问后关闭TCP链接,强制每次访问切换IP
request.header['Connection'] = "Close"```
2、Crawley框架,是Python开发出来的爬虫框架,该框架致力于改变人们从互联网中提取数据的方式。
3、Portia框架,一款允许没有任何编程基础的用户可视化地爬取网页的爬虫框架。
4、newspaper框架,一个用来提取新闻、文章以及内容分析的Python爬虫框架。
5、Python—goose框架,该框架可以提取文章主体内容、文章主要图片、文章中嵌入的任何Youtube/Vimeo视频、元描述、元标签。