c爬虫抓取网页数据(Python爬虫爬虫框架的使用方法是怎样的?(上))

优采云 发布时间: 2021-10-04 10:13

  c爬虫抓取网页数据(Python爬虫爬虫框架的使用方法是怎样的?(上))

  文章内容

  介绍

  说到Python爬虫,非数据分析或者专业的爬虫工程师都会用到爬虫框架,包括Scrapy、Crawley、Portia、Newspaper等,但是Scrapy框架是使用最多的框架。顺便说一句,如果你只知道怎么写爬虫,不懂项目管理,你永远是个小兵,所以对于爬虫管理框架来说,Gerapy框架是首选。

  这里有一个知乎我自己的好评回答来解释这件事。

  Scrapy爬虫框架

  首先要知道Scrapy爬虫框架对新手非常不友好,或者跟着视频学习一些视频网站或者去培训机构学几天技能。主要原因有以下两个方面。

  框架模块太多。虽然只是实现了一个简单的爬虫作业,但实际上在框架中完成一次页面爬取至少需要8步,但是这些步骤基本都是通过配置文件来完成的。, 没有丰富的爬虫经验,很多这些模块不知道它们是做什么的,也不知道如何配置它们。

  基于框架的数据捕获仅限于那些一般的网站捕获,你可以简单的理解为一个完成重复性任务的机器人。但如果是那种反爬虫网站比较厉害的,那就另当别论了。这是爬虫工程师和网站开发者之间的博弈,所以这种情况不适合任何一种爬虫。框架。

  对于那些想在工作中钓鱼的Python工程师来说,必须使用爬虫框架。你会发现它节省了很多精力,效率也很高,但一切都是基于对框架和业务的熟练。为了深入了解。

  任何说 Scrapy 没用的人基本上都没有仔细阅读过 Scrapy 的源代码。在Scrapy框架中构建多个功能的爬虫系统时,你能想到多少个功能?而且基本上,我还没有做过*敏*感*词*的爬虫系统项目。

  让我们把这个往后推,你就会知道为什么要使用 Scrapy 框架。

  我以前的单位是国家互联网新闻中心。我做的一个项目是复现863项目舆情监测系统的内容。使用的方法是Scrapy爬虫框架和Django Web搭建的数据采集系统。捕获的目标对象包括新闻、博客、论坛等,其中每天检测到数千个目标网站。如果不使用框架来做这种数据,采集 会很累。

  1.捕获的数据存储在哪里?

  编写简单的Scrapy爬虫脚本,执行爬取任务时,数据保存在哪里?ES、Mongodb、MySQL?如果做过开发的人都知道是存放在Mongodb中,那么说将数据存放在MySQL中的,基本上99%来自培训机构,因为大部分培训机构爬虫不谈Mongodb。通过业务计算逻辑将数据传输到生产ES环境。

  在Centos7.x上快速搭建MongoDB3.4和用户设置

  2.如何管理数千或数万个爬虫脚本?

  很多新手觉得爬虫脚本难写,其实不然。最难的是如何管理无数的爬虫脚本。下面是 Python 处理这个问题的方式。

  管理方式不外乎几种,Web管理环境、GUI管理环境、手工管理环境,无论哪一种都需要一定的开发基础和管理思路。

  所有文章目录下都有对应的文章,请自行搜索。

  

  

  3.Scrapy如何面对反爬?

  像大多数单行抓取某个网站来解决它的反爬,只要设置反爬逻辑,比如最简单的替换代理IP,替换header,解析JS生成cookie 访问等,你可以在框架中设置所有的配置文件。

  # 添加Header和IP类

from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware

from scrapy.utils.project import get_project_settings

import random

settings = get_project_settings()

class RotateUserAgentMiddleware(UserAgentMiddleware):

def process_request(self, request, spider):

referer = request.url

if referer:

request.headers["referer"] = referer

USER_AGENT_LIST = settings.get('USER_AGENT_LIST')

user_agent = random.choice(USER_AGENT_LIST)

if user_agent:

request.headers.setdefault('user-Agent', user_agent)

print(f"user-Agent:{user_agent}")

# 添加随机更换IP代理类(根据实际IP代理情况进行修改获取方式和更改方式)

import sys

import requests

sys.path.append('.')

class MyProxyMiddleware(object):

def process_request(self, request, spider):

url = "这里放购买的代理API地址,进行解析后使用代理访问"

html = requests.get(url).text

ip_list = html.split("\r\n")[:-1]

proxy = random.choice(ip_list)

request.meta['proxy'] = 'http://' + proxy

  4.如何提高代码编写效率和数据爬取效率?

  你必须阅读源代码,你必须阅读源代码,你必须阅读源代码才能知道这个框架中有什么可用。

  Python爬虫自学目录

  Scrapy 框架

  《Scrapy爬虫框架》下载器中间件(Downloader Middleware)详解

  《Scrapy爬虫框架》蜘蛛中间件(Spider Middleware)详解

  《Scrapy爬虫框架》流水线(Pipeline)详解

  《Scrapy爬虫框架》架构解析(架构概览)详解

  《Scrapy爬虫框架》链接提取器(Link Extractors)详解

  《Scrapy爬虫框架》命令行工具(Command line tool)详解

  《Scrapy爬虫框架》爬虫页面(Spiders)详解

  《Scrapy爬虫框架》请求与响应(Requests and Responses)详解

  《Scrapy爬虫框架》设置(Settings)详解

  《Scrapy爬虫框架》设置cookies方法说明及应用实例

  《Scrapy爬虫框架》输出文件(Feed导出)详解

  《Scrapy爬虫框架》项(Items)详解

  《Scrapy爬虫框架》项目管道(Item Pipeline)详解

  《Scrapy爬虫框架》项目加载(Item Loaders)详解

  《Scrapy爬虫框架》选择器(Selectors)详解

  《Scrapy爬虫框架》异常操作(Exceptions)详解

  Gerapy爬虫管理框架

  《Gerapy爬虫管理框架》win&linux端分布式部署你的Scrapy爬虫脚本

  《Gerapy爬虫管理框架》分布式爬虫管理框架Linux部署坑记录

  《Gerapy爬虫管理框架》分布式爬虫管理框架与Django版本不兼容报错解决方案

  履带标准化项目

  《Python3爬虫标准化项目》环境搭建及爬虫框架Scrapy入门

  《Python3爬虫标准化项目》爬虫目标排序及数据准备

  《Python3爬虫标准化项目》标准化爬虫数据抓取通用代码编写模板

  数据分析师的网络爬虫

  《Data Analyst's Web Crawler》Python爬虫入门基本原理

  《数据分析师的网络爬虫》使用Python快速抓取所需数据

  《Data Analyst's Web Crawler》网络爬虫数据存储MySQL和Mongodb

  《Data Analyst's Web Crawler》抓取动态页面和Ajax渲染页面

  《数据分析师的网络爬虫》简单模拟登录方法

  《数据分析师的网络爬虫》Fiddler Web抓取微信公众号全部历史文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线