• 回答数

    6

  • 浏览数

    80

亲爱的猫猫99
首页 > 毕业论文 > python怎么爬毕业论文

6个回答 默认排序
  • 默认排序
  • 按时间排序

落叶无声2015

已采纳

在进行毕业设计的数据采集和处理时,爬取数据是一种常用的方法,具体步骤如下:1. 确定数据来源:根据设计需求,确定需要获取哪些数据,并找到相应的数据来源,可以是网页、API 接口、数据库等。2. 分析网页结构或 API 接口文档:如果是爬取网页数据或使用 API 接口,需要先分析网页结构或接口文档,了解数据存储的格式和位置等信息。3. 使用 Python 编写爬虫程序:使用 Python 编写爬虫程序,通过 urllib 或 requests 库发送请求并获取响应,使用 Beautiful Soup 或 lxml 库对 HTML 文档进行解析,从中提取所需的数据。如果使用 API 接口,则直接通过 requests 库发送请求并获得返回的数据。4. 数据清洗与存储:将爬取到的数据进行清洗、去重、整合等处理,然后存储到本地文件或数据库中,方便后续分析和应用。需要注意的是,在进行数据爬取时需要遵守相关法律法规,尊重数据所有者的权益,不得侵犯他人的隐私或知识产权。此外,在使用 Python 爬虫程序时,还需要遵守网站的访问规则,不要过度频繁地访问同一个网站,以免引起服务器的负荷过大或者被封禁 IP 等问题。

94 评论

夜未央周

python最常用的是requests库,pip install requests,然后import requests,就可以(url)了,这是最基本的爬虫了,对于静态网页应该没有什么问题。如果要登录获取信息,那么就直接session = (); (url)之类。对于动态网页,比如纯js写的网页,推荐phantomjs和casperjs;虽然这两个东西和python没有关系,但是安装好phantomjs,再使用python-selenium,就可以把phantomjs当没有界面的浏览器使用,并可以得到js运行后渲染出的页面。

120 评论

小兔斯基801110

别折腾了,不打算往爬虫方向发展的话没必要自己学,爬虫所需要的技术非常广泛、且对深度都有一定要求,不存在“快速学会”的情况。所有那些吹快速学会爬虫的培训班都是扯淡,那些课程学完后的水平连傻瓜式爬虫工具都不如,有啥意义?再说了,你们写论文、做研究又不会需要什么很大量、很高频、很实时的数据,那些傻瓜式爬虫工具完全足够了,点几下就能出数据。

222 评论

唐伯兔吃小白兔

1)首先你要明白爬虫怎样工作。想象你是一只蜘蛛,现在你被放到了互联“网”上。那么,你需要把所有的网页都看一遍。怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧。在人民日报的首页,你看到那个页面引向的各种链接。于是你很开心地从爬到了“国内新闻”那个页面。太好了,这样你就已经爬完了俩页面(首页和国内新闻)!暂且不用管爬下来的页面怎么处理的,你就想象你把这个页面完完整整抄成了个html放到了你身上。突然你发现, 在国内新闻这个页面上,有一个链接链回“首页”。作为一只聪明的蜘蛛,你肯定知道你不用爬回去的吧,因为你已经看过了啊。所以,你需要用你的脑子,存下你已经看过的页面地址。这样,每次看到一个可能需要爬的新链接,你就先查查你脑子里是不是已经去过这个页面地址。如果去过,那就别去了。好的,理论上如果所有的页面可以从initial page达到的话,那么可以证明你一定可以爬完所有的网页。那么在python里怎么实现呢?很简单import Queueinitial_page = "初始化页"url_queue = ()seen = set()(initial_page)(initial_page)while(True): #一直进行直到海枯石烂 if ()>0: current_url = () #拿出队例中第一个的url store(current_url) #把这个url代表的网页存储好 for next_url in extract_urls(current_url): #提取把这个url里链向的url if next_url not in seen: (next_url) (next_url) else: break写得已经很伪代码了。所有的爬虫的backbone都在这里,下面分析一下为什么爬虫事实上是个非常复杂的东西——搜索引擎公司通常有一整个团队来维护和开发。2)效率如果你直接加工一下上面的代码直接运行的话,你需要一整年才能爬下整个豆瓣的内容。更别说Google这样的搜索引擎需要爬下全网的内容了。问题出在哪呢?需要爬的网页实在太多太多了,而上面的代码太慢太慢了。设想全网有N个网站,那么分析一下判重的复杂度就是N*log(N),因为所有网页要遍历一次,而每次判重用set的话需要log(N)的复杂度。OK,OK,我知道python的set实现是hash——不过这样还是太慢了,至少内存使用效率不高。通常的判重做法是怎样呢?Bloom Filter. 简单讲它仍然是一种hash的方法,但是它的特点是,它可以使用固定的内存(不随url的数量而增长)以O(1)的效率判定url是否已经在set中。可惜天下没有白吃的午餐,它的唯一问题在于,如果这个url不在set中,BF可以100%确定这个url没有看过。但是如果这个url在set中,它会告诉你:这个url应该已经出现过,不过我有2%的不确定性。注意这里的不确定性在你分配的内存足够大的时候,可以变得很小很少。一个简单的教程:Bloom Filters by Example注意到这个特点,url如果被看过,那么可能以小概率重复看一看(没关系,多看看不会累死)。但是如果没被看过,一定会被看一下(这个很重要,不然我们就要漏掉一些网页了!)。 [IMPORTANT: 此段有问题,请暂时略过]好,现在已经接近处理判重最快的方法了。另外一个瓶颈——你只有一台机器。不管你的带宽有多大,只要你的机器下载网页的速度是瓶颈的话,那么你只有加快这个速度。用一台机子不够的话——用很多台吧!当然,我们假设每台机子都已经进了最大的效率——使用多线程(python的话,多进程吧)。3)集群化抓取爬取豆瓣的时候,我总共用了100多台机器昼夜不停地运行了一个月。想象如果只用一台机子你就得运行100个月了...那么,假设你现在有100台机器可以用,怎么用python实现一个分布式的爬取算法呢?我们把这100台中的99台运算能力较小的机器叫作slave,另外一台较大的机器叫作master,那么回顾上面代码中的url_queue,如果我们能把这个queue放到这台master机器上,所有的slave都可以通过网络跟master联通,每当一个slave完成下载一个网页,就向master请求一个新的网页来抓取。而每次slave新抓到一个网页,就把这个网页上所有的链接送到master的queue里去。同样,bloom filter也放到master上,但是现在master只发送确定没有被访问过的url给slave。Bloom Filter放到master的内存里,而被访问过的url放到运行在master上的Redis里,这样保证所有操作都是O(1)。(至少平摊是O(1),Redis的访问效率见:LINSERT – Redis)考虑如何用python实现:在各台slave上装好scrapy,那么各台机子就变成了一台有抓取能力的slave,在master上装好Redis和rq用作分布式队列。代码于是写成# = request_from_master()to_send = []for next_url in extract_urls(current_url): (next_url)store(current_url);send_to_master(to_send)# = DistributedQueue()bf = BloomFilter()initial_pages = ""while(True): if request == 'GET': if ()>0: send(()) else: break elif request == 'POST': ()好的,其实你能想到,有人已经给你写好了你需要的:darkrho/scrapy-redis · GitHub4)展望及后处理虽然上面用很多“简单”,但是真正要实现一个商业规模可用的爬虫并不是一件容易的事。上面的代码用来爬一个整体的网站几乎没有太大的问题。但是如果附加上你需要这些后续处理,比如有效地存储(数据库应该怎样安排)有效地判重(这里指网页判重,咱可不想把人民日报和抄袭它的大民日报都爬一遍)有效地信息抽取(比如怎么样抽取出网页上所有的地址抽取出来,“朝阳区奋进路中华道”),搜索引擎通常不需要存储所有的信息,比如图片我存来干嘛...及时更新(预测这个网页多久会更新一次)如你所想,这里每一个点都可以供很多研究者十数年的研究。虽然如此,“路漫漫其修远兮,吾将上下而求索”。所以,不要问怎么入门,直接上路就好了:)

297 评论

fomeca刘勇

做爬虫,特别是python写说容易挺容易,说难也挺难的,举个栗子 简单的:将上面的所有代码爬下来写个for循环,调用urllib2的几个函数就成了,基本10行到20行以内的代码难度0情景:1.网站服务器很卡,有些页面打不开,urlopen直接就无限卡死在了某些页面上(以后urlopen有了timeout)2.爬下来的网站出现乱码,你得分析网页的编码3.网页用了gzip压缩,你是要在header里面约定好默认不压缩还是页面下载完毕后自己解压4.你的爬虫太快了,被服务器要求停下来喝口茶5.服务器不喜欢被爬虫爬,会对对header头部浏览器信息进行分析,如何伪造6.爬虫整体的设计,用bfs爬还是dfs爬7.如何用有效的数据结构储存url使得爬过的页面不被重复爬到8.比如1024之类的网站(逃,你得登录后才能爬到它的内容,如何获取cookies以上问题都是写爬虫很常见的,由于python强大的库,略微加了一些代码而已难度1情景:1.还是cookies问题,网站肯定会有一个地方是log out,爬虫爬的过程中怎样避免爬到各种Log out导致session失效2.如果有验证码才能爬到的地方,如何绕开或者识别验证码3.嫌速度太慢,开50个线程一起爬网站数据难度2情景:1.对于复杂的页面,如何有效的提取它的链接,需要对正则表达式非常熟练2.有些标签是用Js动态生成的,js本身可以是加密的,甚至奇葩一点是jsfuck,如何爬到这些难度3总之爬虫最重要的还是模拟浏览器的行为,具体程序有多复杂,由你想实现的功能和被爬的网站本身所决定爬虫写得不多,暂时能想到的就这么多,欢迎补充

150 评论

Flora已被注册

链接:

课程简介

毕业不知如何就业?工作效率低经常挨骂?很多次想学编程都没有学会?

Python 实战:四周实现爬虫系统,无需编程基础,二十八天掌握一项谋生技能。

带你学到如何从网上批量获得几十万数据,如何处理海量大数据,数据可视化及网站制作。

课程目录

开始之前,魔力手册 for 实战学员预习

第一周:学会爬取网页信息

第二周:学会爬取大规模数据

第三周:数据统计与分析

第四周:搭建 Django 数据可视化网站

......

172 评论

相关问答

  • 毕业论文基于python网络爬虫实战

    :从爬虫必要的几个基本需求来讲: 1.抓取 py的urllib不一定去用,但是要学,如果还没用过的话。 比较好的替代品有requests等第三方更人性化、成熟的

    艰难之旅 5人参与回答 2023-12-08
  • python怎么爬毕业论文

    在进行毕业设计的数据采集和处理时,爬取数据是一种常用的方法,具体步骤如下:1. 确定数据来源:根据设计需求,确定需要获取哪些数据,并找到相应的数据来源,可以是网

    亲爱的猫猫99 6人参与回答 2023-12-11
  • python爬取数据毕业论文

    可以先利用搜索引擎学习。简单爬虫不难,无非发起http访问,取得网页的源代码文本,从源代码文本中抽取信息。首先要自己会写代码。学习爬虫可以从下面一些知识点入手学

    Nicole6996 4人参与回答 2023-12-08
  • 毕业论文爬取怎么爬

    知网是一个学术论文的收录网站,可以在知网上查找到自己的毕业论文。具体步骤如下:1.打开知网,在搜索框中输入自己的论文题目或者关键词,点击搜索。2.在搜索结果中,

    小老虎山大王 2人参与回答 2023-12-10
  • python爬虫编写毕业论文

    python可以做很多类型的项目或许你可以参考一下:知乎的回答:

    木图先生 4人参与回答 2023-12-08