热门标签 | 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,作为报文直接访问网站。



推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 深入解析Nginx中的Location指令及其属性
    本文将详细探讨Nginx配置文件中关键的location指令,包括其三种匹配方式(精准匹配、普通匹配和正则匹配),以及如何在实际应用中灵活运用这些匹配规则。此外,还将介绍location下的重要子元素如root、alias和proxy_pass,并解释相关参数的使用方法。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 随着Redis功能的不断增强和稳定性提升,其应用范围日益广泛,成为软件开发人员不可或缺的技能之一。本文将深入探讨Redis集群的部署与优化,包括主从备份机制、哨兵模式以及集群功能,帮助读者全面理解并掌握Redis集群的应用。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
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社区 版权所有