热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于python爬虫的论文的开题报告_基于python的新闻网站网络爬虫设计与实现开题报告...

1.研究背景及其意义互联网从发展到至今,已经深入到人们的日常生活中,并且不论老人还是小孩,多少都会接触到互联网。在这个越来越信息化的社会&

1.研究背景及其意义

互联网从发展到至今,已经深入到人们的日常生活中,并且不论老人还是小孩,多少都会接触到互联网。在这个越来越信息化的社会,互联网上的信息量更是爆炸式的增长,但是在如此巨大的信息量中,我们想要找到我们需要的价值信息就非常困难了。国内国外包含了很多搜索引擎,类似有搜狗,百度,360等等,我们如何有效的寻找具有价值的信息?网络爬虫应运而生,它可以帮助我们在繁琐的信息网中爬取出关键信息,而且可以一次性的爬取出来,省去了人力搜索。

网络爬虫技术发展至今,已经具有非常的成熟的技术架构,我们可以用它爬取我们需要的数据,并且存储在我们的数据库。例如如果我们需要爬取大量银行数据利率做数据分析时,我们不可能去每个网站去做手动统计,这样会消耗我们大量人力和时间,非常浪费资源,爬虫可以做到快速且一次性提取中一个网站中我们所需要的数据。现在不仅仅是个人需要互联网上的信息,大部分企业都会去网络上爬取公司需要的数据,甚至有的公司会专门设置一个爬虫工程师的岗位。这些充分说明了网络爬虫已经步入人们日常生活中,并且网络爬虫会有一个开阔的发展前景和魅力。

2.国内外研究现状

不管国内国外,爬虫现在的地位越来越稳固,且不可动摇,对爬虫领域的潜心研究,不管是国内,还是国外,从爬虫诞生的那一刻起,就没有停止过。据说爬虫的起源是为了统计服务器的个数。互联网发展到现在,国内国外都已经有大量引擎,

Google、百度、360等,都是采用网络爬虫原理设计的。

2020年的今天,市面上开源的主流爬虫框架有Scrapy、Nutch等,爬虫工具有Content、火车采集器等。Scrapy属于国内的一款,它使用极为方便,可以爬取大多数静态网页的内容,可以根据需求定制集成一些工具,爬取效率较高。但也有局限性,对于动态JS网页必须借助于第三方工具,爬取主要手段xpath解析或者正则提取。国外的比较流行的框架是ContentGraber,它是一款面向企业级的的网络爬行软件,它几乎可以从任何网页中提取数据,并且可以结构式的保存,它的功能十分强大,适合高级程序员做一些更复杂的事。而且目前,单机的Scrapy系统也可以结合redis数据库,利用消息队列发布任务,做一个分布式爬虫系统,主要利用redis为内存数据库的特点去发布任务,多个Scrapy去抢任务,提高整个爬虫效率。

近几年,对爬虫方面的工具集也从未停止过,国内外学者都在不断创新和改进现有的技术,曹文斌等人借助自动化测试工具selenium模拟浏览电商网页进行爬取,侯志江等人用自动化交互式采集工具解决了Ajax动态数据的爬取问题。

3.选题研究的内容

本论文研究内容是基于Python的爬虫网络设计,利用Python的Scrapy的框架搭建爬虫网络,Django框架做后台数据管理系统

3.1掌握Python语言的特性

Python语法结构相对于其他语言来说比较简单,并且具有一些其他语言不具备的优势,比如字符串切片操作、一句代码换值操作等。它具有可移植性,可在不同操作系统中进行代码移植,不会影响它的执行;Python属于解释性语言,编译的代码可在操作系统中直接执行,不需要转换为二进制;Python具有很多强大的第三方库,可应用在不同的操作空间里,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器等,能够提高程序编写效率。

3.2Scrapy框架流程的使用

网络爬虫就是模拟客户端发送网络请求,按照一定规则,抓取互联网信息的程序;Scrapy框架是Python中一个比较强大的爬虫工具,它主要分为引擎、调度器、爬虫模块、项目管道、下载器中间件、爬虫中间件、调度中间件等;找到一个网页中url,引擎把它封装成一个请求传给下载器,下载器将资源下载下封装成应答包,爬虫解析Response,解析出实体Item,交给实体管道进一步处理,然后把Url交给调度器等待抓取。利用Scrapy框架爬取一个url需要5步,第一步,创建一个蜘蛛,也就是

spider.py文件,用来对url进行解析;第二步,找出你需要在网页中爬取的数据,然后在items.py中创建models,类似与数据库表中的字段;第三步,可以在中间件中做一些网页中做一些应对反爬策略的方法,比如应对js加载,可以使用selenium工具做一些滚动预加载;第四步,开始爬出,实时注意控制板是否有错误发生;第五步,利用pipelines.py文件将爬取的内容存入文件中或者写入准备好的数据库的表中。

3.3Django框架的使用

Django框架是Python中应用广泛的框架,具有非常多的功能,使用于大型工程的创建,而且拥有着自带的admin后台管理系统,是一款典型的MVC框架。在本系统设计中,Scrapy框架将数据爬取并存入数据库中,Django框架连接数据库,将数据显示给用户。Url采用通用的restful风格,restful风格是一种url设计风格,大部分程序都会采用这种通用的url风格,具有很强的实用性。Django框架一般在setting配置数据库的的连接,包括一些中间件的设置。

4.常见反爬策略以及应对方法

4.1动态JS加载

动态JS加载是指在一般网页中,我们都能在浏览器源码中不能直观看出来确又在网页中显示出来的东西。

4.2限制主机IP

我们每一人的主机只有一个唯一IP,我们在爬取某些网站资源时,如果我们一直窃取网站内容,它会限制我们IP不能对该网站进行访问,这种问题我们该怎样解决呢?我们可以再middware.py文件中维护一个代理ip池,网站上有免费的代理IP,也可以在某宝上购买一定数量的合法IP,供我们使用。

4.3验证码限制

(1)大家在登录的时候都会遇到滑动验证码或者输入字符类似的验证码,遇到这种情况,他会阻止我们对网站进行爬虫,我们虽然可以用selenium做自动登录,但无法获取这种动态验证码的值。

4.4检验数据头

网站管理人员会根据请求的user-agent判定你是不是机器爬虫。所以,此时往往就需要伪装user-agent,模拟成真实的浏览器去取出内容。我们可以根据我们访问的网页找到我们的user-gent,作为报文直接访问网站。



推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • PHP中Smarty模板引擎自定义函数详解
    本文详细介绍了如何在PHP的Smarty模板引擎中自定义函数,并通过具体示例演示了这些函数的使用方法和应用场景。适合PHP后端开发者学习。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文详细探讨了如何根据不同的应用场景选择合适的PHP版本,包括多版本切换技巧、稳定性分析及针对WordPress等特定平台的版本建议。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 本文详细介绍了如何在最新版本的Xcode中重命名iOS项目,包括项目名称、应用名称及相关的文件夹和配置文件。通过本文,开发者可以轻松完成项目的重命名工作。 ... [详细]
  • 本文介绍了记事本的基本保存方法以及通过辅助软件实现自动保存的技术,帮助用户更好地管理和保护重要数据。 ... [详细]
  • Fiddler 安装与配置指南
    本文详细介绍了Fiddler的安装步骤及配置方法,旨在帮助用户顺利抓取用户Token。文章还涵盖了一些常见问题的解决方案,以确保安装过程顺利。 ... [详细]
  • 在使用Flex 4.6部署ArcGIS Viewer for Flex 3.7时遇到的问题及解决方案,包括如何正确导入和配置必要的库文件。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
author-avatar
手机用户2502931803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有