Python的爬虫框架主要可以分为以下五个部分:

爬虫调度器:用于各个模块之间的通信,可以理解为爬虫的入口与核心(main函数),爬虫的执行策略在此模块进行定义;

URL管理器:负责URL的管理,包括带爬取和已爬取的URL、已经提供相应的接口函数(类似增删改查的函数)

网页下载器:负责通过URL将网页进行下载,主要是进行相应的伪装处理模拟浏览器访问、下载网页

网页解析器:负责网页信息的解析,这里是解析方式视具体需求来确定

信息采集器:负责将解析后的信息进行存储、显示等处理


代码示例是爬取CSDN博主下的所有文章为例,文章仅作为笔记使用,理论知识rarely

一、网页下载器简介

网页下载器负责根据URL来下载网页。

很多网站有类似的简单防爬措施(比较复杂的我不清楚、目前也不会处理),因此在下载网页时需要进行模拟浏览器的操作,为request操作添加相应的信息。

框架如下:

'''
自定义Python伪代码
'''# 最简单的框架# 0. 添加头部信息 headers = {}# 1. 求请访问一个网站URL : request.Request(url, headers=headers)# 2. 获得请求应答: request.urlopen(url_request)# 3. 解析应答# 1)url_response.read(): 获取应答的数据内容# 2)decode('utf-8'): 将获取应答的数据内容转换为utf-8格式,便是观察显示

二、网页下载器示例:(爬取CSDN博主下的所有文章

# author : sunzd
# date : 2019/3/22
# position: chengdufrom fake_useragent import UserAgent
from urllib import request
from urllib import errorclass HtmlDownloader(object):def downloader(self, url):if url is None:print("downloader: Url is None")return None# 设置用户代理# headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'}# 使用伪代理fake UserAgent进行访问headers = {'User-Agent': str(UserAgent().random)}# print(url)req = request.Request(url, headers=headers)try:html = request.urlopen(req).read()except error.URLError as e:print("download error:", e.reason)html = Nonereturn html

三、上述代码用到的知识点:

1. 职业生成模拟浏览器头部信息:

from fake_useragent import UserAgent

可以通过pip直接进行安装。在Pycharm下的安装如下:

     headers = {'User-Agent': str(UserAgent().random)}  # 构造头部信息

UserAgent() 可以生成多个浏览器的信息,UserAgent().random 则每次随机选取其中一个信息:

# author : sunzd
# date : 2019/3/23
# position: chengdu'''
测试fake_useragent的信息
'''
from fake_useragent import UserAgentusers = UserAgent()
'''
users = UserAgent().data_browsers  # 浏览器类型
chrome
opera
firefox
internetexplorer
safari
'''
print(users.chrome)
print(users.opera)
print(users.firefox)
print(users.internetexplorer)
print(users.safari)
'''
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; de) Opera 11.01
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0.6
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) chromeframe/10.0.648.205
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
'''

python3 爬虫五大模块之三:网页下载器相关推荐

  1. Python3爬虫之Scrapy框架的下载器中间件

    Python爬虫之Scrapy框架的下载器中间件 基本介绍 下载器中间键可以为我们设置多个代理ip与请求头,达到反反爬虫的目的 下面是scrapy为我们创建好的中间件的类 下面是中间件中的下载器函数, ...

  2. Python爬虫----网页下载器和urllib2模块及对应的实例

    网页下载器:将互联网上URL对应的网页下载到本地的工具,是爬虫的核心组件 urllib2下载网页的三种方法 对应实例代码如下: #coding:utf8import urllib2 url = 'ht ...

  3. python3.4.4实现网页爬虫基础之网页下载器三种方法

    这是是慕课网<Python开发简单爬虫>中网页下载器的三种实现方法,课程用的是python2.7,这里用最新的3.4.4实现出来,分享给新人: import urllib.request ...

  4. 简单的爬虫架构和网页下载器requests

    目录 简单的爬虫架构: 网页下载器: URL管理器: 网页解析器: 网页下载器requests: 发送requests请求: 接收requests请求: requests操作实例: 简单的爬虫架构: ...

  5. Python爬虫:URL管理器及其实现方式、网页下载器、网页解析器原理及其实现原理!

    Python爬虫之URL管理器: Python爬虫:URL管理器实现方式: Python爬虫之网页下载器: urllib2实现网页下载器的三种方法: 具体代码:                    ...

  6. Python爬虫之网页下载器网页解析器

    一.网页下载器 -- urllib2的三种网页下载方法 import cookielib import urllib2url = "http://www.baidu.com" pr ...

  7. Python轻量级爬虫教程-网页下载器

    爬虫简介: 抓取自己想要的的类别网页上的数据. 爬虫架构: 爬虫调度端 爬虫:URL管理器, 网页下载器,网页解析器 数据: 爬虫运行流程: URL管理器: 管理待抓取URL集合和已抓取URL集合: ...

  8. 用 python 实现一个多线程网页下载器

    今天上来分享一下昨天实现的一个多线程网页下载器. 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据.把它放上来也是想大家帮忙挑刺,找找 bug,让它工作得更好. k ...

  9. java爬虫写一个百度图片下载器

    文章目录 img_download 1.0 看看效果吧 2.0 了解一下 "图片下载器软件" 目录结构 3.0 如何使用? 4.0 源码剖析 5.0 项目地址 6.0 写在最后的话 ...

最新文章

  1. 32岁程序员面试被拒:比又穷又忙更可怕的,是2020年你还不懂...
  2. mysql之DDL操作--数据库
  3. 发送IP和MAC地址的方法
  4. python项目部署nginx_详解使用Nginx和uWSGI配置Python的web项目的方法
  5. 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)I love counting(Trie树)
  6. POJ 2240题(Floyd)
  7. Kafka笔记-kafka外网搭建及构建生产者
  8. 提高测试脚本复用性降低DOM结构引起路径变化的影响
  9. qbittorrent container 改共享文件_SSH连接docker中的container
  10. python3 re模块_python3+ 模块学习 之 re
  11. 新手必读:PhoneGap入门六大问题
  12. 完整缓和曲线和非完整缓和曲线交点法坐标计算应用
  13. 我的第一个hbulider项目
  14. html5制作新年祝福,2018新年祝福贺卡制作
  15. SOEM-Ethercat源代码解析一(数据类型定义)
  16. 什么是5G advanced
  17. 数学建模 多属性决策模型
  18. 对偶方法(Dual Methods)
  19. ERROR 2003 ( HY000 ) : Can ‘t connect to MySQL server on ‘ xxx.xxx.xxx.xxx ‘,
  20. python算法一:枚举法

热门文章

  1. linux 压缩文件性能,Linux常见压缩格式Tar、Zip和Gz格式之不同
  2. 高德地图 自定义路径
  3. python tkinter获取屏幕大小_Python开发GUI工具介绍,实战:将图片转化为素描画
  4. 趣链中台部二面攻略(记得发布保存)
  5. 拒绝低效丨只需十分钟,提升十倍3D点云连续帧标注效率
  6. 尚筹网(众筹项目实战)
  7. 敏捷方法论:理解敏捷测试的完整指南
  8. 机器人生产推动机械五金产业发展
  9. Android无限滚动库mugen实现加载更多效果
  10. ANDROID 开源书架