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



推荐阅读
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • java文本编辑器,java文本编辑器设计思路
    java文本编辑器,java文本编辑器设计思路 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文介绍如何在Java中实现一个罗马数字计算器,重点在于如何通过循环和字符验证确保用户输入合法。我们将探讨创建一个方法来检查字符串中的非法字符,并使用循环不断提示用户输入,直到输入符合要求。 ... [详细]
  • 本文将详细介绍Nose这一非标准库的Python测试框架,它虽然不是Python官方发行版的一部分,但与unittest框架紧密相关,旨在通过简化测试流程来提升开发效率。 ... [详细]
  • python开发mysql:单表查询&多表查询
    一单表查询,以下是表内容二多表查询,一下是表内容三总结&表创建过程单 ... [详细]
  • java程序员_Java程序员最新职业规划,逆袭面经分享
    java程序员_Java程序员最新职业规划,逆袭面经分享 ... [详细]
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社区 版权所有