版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
镇率将达镇率将达关键词:二手房;scrapy;数据爬取;非结构化数Withtherapiddevelopmentofsocialeconomyandtheacceleratedconstructionofurbanization,therealestatetransactionisbecomingmoreandmorepopular,especiallythesecond-handhousingtransactionmarketremainshigh.Second-handhousingisnotonlyhousing,butalsousedbypeopletoinvestmoney.BynowistheageWiththerapiddevelopmentofsocialeconomyandtheacceleratedconstructionofurbanization,therealestatetransactionisbecomingmoreandmorepopular,especiallythesecond-handhousingtransactionmarketremainshigh.Second-handhousingisnotonlyhousing,butalsousedbypeopletoinvestmoney.BynowistheageoftheInternet,allwalksoflifecanbeintheInternettofindtheirowngrowth,thepublic'slifeisbecomingmoreandmoreinseparablefromtheInternet,andputtingforwardalongwiththenationalpolicy,therateofourcountrytownin2020isexpectedtoreach60%,whichmeansmoreandmoreruralresidentswillgototown,theymostlyamongtheyounggeneration,especiallyafter90and95aftertheurgentneedofhousing,soneedmorehouses.Butinrecentyears,ashousingpriceshavesoaredandtheofflinerealestateindustrycontinuestosuffer,moreandmoreyoungpeoplearechoosingtobuyhousesontheInternet.However,withtherapiddevelopmentofInternet,thedataacquisitionhasnoproblem,itisintheeraofbigdata,thepeopleinthefaceofcomplexdisorderinformation,donotknowhowtostart,especiallysecond-handhousingselectionismoredifficult,thedatasourceiswide,allkindsofpricesisuneven,howtopromotethepurchaseofsecond-handhousingandleasinghasbecomeaproblemworthytobediscussed.Thispapertakesthisastheresearchdirection,designsandimplementsasecond-handhousedatacrawlingsystembasedonPythonopensourcecrawlerframeworkscrapy,whichismainlyusedtocrawlthesecond-handhousewebsiteofHOMELINKontheInternet.Takingzhengzhouurbanareaasadivision,thecrawledhousingsourcedataarestoredintheunstructureddatabaseMongoDB,andthenthecrawleddataarecleanedandmined,andthesecond-handhousingdataarevisualized.Keywords:ResoldApartment;Scrapy;DataCrawler;NoSQL目录摘 1绪 目录摘 1绪 本章小 2 2.1robot协议对本设计的影 爬 scrapy架 2.5.1scrapy:开源爬虫架 3 3.1系统分 数据 4 4.1.1环境搭建与前期分 4.4本章小 4.4本章小 5系统测 5.2.1数据爬取功能测 6总结与展 参考文 11.121世纪以来,互联网已真正进入千家万户,特别是随着时代的发展和网络技术11.121世纪以来,互联网已真正进入千家万户,特别是随着时代的发展和网络技术术原型非常吸引人,5G和我们之间的距离正在逐步接近了。即使在传统医疗行业,手Internet的发展,网络数据在数据量和数据复杂性方面呈指数级增长。根据世IDC202035ZB。[9]2017IP2015-2020期间数据择,其中80后居多,北上广深的二手房用户超过了30%,省会以及二三线城市的用户比 URLURL的网页内容,得到复,不断从请求队列中提取URL进行请求,直至请求队列为空或某些其他情况1.1python语言在爬虫设计与实现中具有独特的优势。首先,pythonscrapy等一些其python依然提供了众多成熟的第三方库如request、Beautiful解析库等等,其中也集成python1.2.2分钟的浏览量为1.2万,真实用户仅有500人左右,爬虫流量占比峰值曾达到了headers。headersHTTP协议的一部分,是区分人与机器的最第二,IP限制。爬虫与人访问网页最大的区别在于,爬虫一般完成的是短时间内超一种十分高效的反爬手段:IPIP在短时间内的访问量超出了某个既IP代理html代码中,这样既不会影响到正常用户的访问,又可第五,验证码。验证码全称为全自动区分计算机和人类的图灵测试,它2002MongoDBpythonscrapy对MongoDB,避免网上信息的非结构性对数据存储的影有效性验证与维护。本系统还涉及到的技术有:MongoDBscrapy1.4用。如Robot协议等,其中着重对爬虫架构scrapy、非结构化数据库用。如Robot协议等,其中着重对爬虫架构scrapy、非结构化数据库MongoDB。1.522.1robot22.1robotrobots.txtrobot协议的直接体现。如果将网站视作一个旅游景点,robots.txt互联网公司都遵循robot协议,这体现了互联网的一种契约精神。robot协议,本爬虫系统将有部分数据无法爬取到。本系统不是为了某些URL(UniversalResourceIdentifier):通用资源标识符,互联网中每一个资源都由一个唯一的URL所确定,反之根据URL可以定位互联网上的唯一一个资源。HTTPHTTPHTMLHTML语言编写的网页代码2.2.2URLURL的网页内容,得到2.2.3URLURL最URL58同城为例,横向搜索是指从列表第一页开始,一次次的向后翻页,将下一页的URL加入到待爬取的队列。URL,将其加入到待爬取队列中等待爬深度为2。略都有所支持,具体内容将在2.5节中介绍。2.3python2.4准。若光有XML语言而没有一种能够操作其所描述数据的方法,则毫无用处。[15]必有某种数据查询语言与之配合,这样XMLXPath,是XML的路径语言,它可以用来确定XPath,是XML的路径语言,它可以用来确定XML(可扩展标记语言)文档中某个标签或数据的位置,是W3C体系中用于查询XML文档的通用标准,可以将其看做XML的XPathXML文档的树形结构访问。其在本系统中,XPath所完成的最关键的任务是数据定位,即从爬取到的网页中依据selector、正则表达式等。scrapyXPath定位,使XPath个异步IO的框架。由于它的Twisted特性,scrapy框架内置实现了单机多线程,十分有性,scrapy不支持分布式爬虫,如要实现分布式,需要调用其他包。scrapy扩展功能十分强大。在框架中提供了众多内置模块,几乎涵盖爬虫所需处scrapycssXPath两种定位方式对爬取到的网页进行元素定位,其对网页scrapyscrapy2.5.2scrapy2.5.2scrapy2.22.2scrapyURL交给引擎,接着引URL交由下载器处理,下载器向这些页面发起请求,(在请求过程中可能使Spiders。,在其中,将根据页面的2.5.3scrapySpiderscrapy框架自身提供的爬虫类,种种Spider,只有某个地方使用了第二种第一种为scrapy.Spider。Spider是最简单的spider。开发者编写的每个spider类必须继承自该类。Spiderstart_urls或调用start_requests方法,并根据返回的结果选择不同的parse方法解析数据。虫系统中,该字段必须保证唯一,name可以说是整个框架中最不能修改的一个字段。allowed_domains,列表类型,当中间件中的OffsiteMiddleware为开启状态时(默认URL,提供给引擎。后续爬取的URL将从此开始寻找start_request()yield返回。该返回的对spiderrequestURL时,自动调用该方法,开始请求URL。parse():该函数是整个类中最关键的方法,也是爬虫逻辑实现的主要地方。当据以生成器的形式返回给pipeline处理。href链接;follow,布尔类型,定义了对爬取到的URL是否需要继续跟进。Spiderstart_requestparse两方法的配合,可以实现对页面的纵向爬取,通过start_urls列表,可以直接依据URL的规律直接指定横向爬取。使用CrawlSpider,可以直接由列表页的第一页开始,依据写好的爬取规则进行横向与纵向库[19;20]。模数据时,NoSQL数据库有着更好的表现。2.6.2MongoDB2.7如robot协议、模板语言等。数据库MongoDB333.1.2表3.1对爬取的目标及目标状况进行分析。3.1入的了解。表3.1对爬取的目标及目标状况进行分析。3.1.3强3.23.23.23.23.33.33.43.44anaconda是一个开源的python4anaconda是一个开源的python发行版,其中默认包含了大量第三方库及其相互依scrapyscrapy复杂的scrapyanaconda4.14.1anacondascrapystartproject4.2scrapy4.1scrapy观察链家网网页结构如图4.2scrapy4.1scrapy观察链家网网页结构如图否遵循robot协议、是否开启cookie功能等可以将其存储为csv或其他格式的文件,也可将其存入某数据库4.34.34.4:4.54.5页的后缀为‘/pg2’,且无论是通过点击下一页,还URL直接输入‘/pg101’,都无法访问101页,说明链家网默认只提供100页的二手房房源信息由于其反爬措分严格,短时间内快速访问IP封禁,故本系统只爬取其列表页,该爬取主Spider类的爬虫即可。设计其爬取流程4.64.6Spider类,并对其关键字进行定义4.74.7name字段为唯一name字段为唯一表示此爬虫的字段,开启爬虫时需要url为网URL的一部分,用列表解析式170之间的数字,即可完成对所start_urls.append('/ershoufang/'+dis+'/pg'+str(num)+python极简的语法完成了不同区域下的1100url的生成parse函数4.84.8parse18行:完成了在item.py中定义的字段类的实例化,此后将使用该实例对象接收数1939行:使XPath对页面元素进行定位,找到其中包含的标题、价格、所处XPath语法规则:‘//’表示在整个页面中搜索,‘/text()’表示获取HTML5中该标4158行:将抓取到的数据item对象item字段必须item.py文件59行:逐条返item实例。将数据pipeline.py处理。4.1.4pipeline所需完成的任务是数据的收集与存储,主要涉及与数据库的连接、接收spider文件传来的spider文件传来的item实例、对数据进行数据打包、存入数据库等操作。其模设计图4.9所示4.9pipeline.py文件中导pythonMongoDB链接的第三方pymongo,然后完与数据库的连接。如4.104.10此时已连接至‘bishe’库的‘esfdemo’表接着在该管道类中定义进行数据封装与存入的函数4.11所示4.1121行:对数据进行打包,将其变换Python的字典类型,方便存MongoDB数据22行:将数据插入数据库23行23行:process_item函数默认返回item4.1.5包括设置抓取时延、禁用cookieUser-AgentIP代理池,接下来将分别设置Download_dalay:对于那些反爬虫力度适中的网站,设置下载时延是一个不错的方法。在中间件文件middleware.py中写入Download_dalay=2,即可完成爬取时延的cookie:该方法是为了避免网页依cookie来识别爬虫进行封禁。禁cookie在setting.py文件中COOKIE_ENABLEFALSE,即可禁cookie。使用User-Agent池:可在网上搜索到大量的User-Agent,将其写成列表放入中间件文件中,写自己的中间件函数来继承本身架构中的User-Agent中间件,在其中使用random函数,每次访问随机选User-Agent池中的一User-Agent。再setting.py文Agent4.12所示115以下行:互联网上找到User-Agent,将其写入列表。第109110行:初始化。111114行User-Agent的随机选择,并将此加入到请求时的headers头中。IP代理池IP代理不像使User-Agent一样,可以在网上找到大量现批量化获取免费高匿IP代理。该部分的设计如图4.13所示笔者爬取了“西刺代理网”上的免费代理,通过使用telnetlib库对爬取的IP进行测试,过滤掉无用的代理IP,将可以使用的IP存入到proxy_list文件中,爬虫将爬取来的IPIP代理池的形式写入中间件中,实现IP池的使用。4.14第156行:在请求头中设置IP代理。4.15settingUser-Ageent及IP4.1507004.164.164.174.18pythonMongodb4.19MongoPlugin4.31234564.19MongoPlugin4.31234567894.314.314.324.334.455.1操作系统:win10软件版本环境如表5.15.2。55.1操作系统:win10软件版本环境如表5.15.2。5.2IP请求网页,导致出现302错误,网页将爬虫访问的链接重定向至无效页面。URL,对比爬取到的数据与数据库中的数据,以判断其抓取的准确性。测试用例及测试过程如下表5.3。AnacondacustomPycharmx64专业5.3费10分钟,抓取速度达到每分钟约300页面,基本满足需求。5.415.3费10分钟,抓取速度达到每分钟约300页面,基本满足需求。5.41是2是3一卫采光很好是4是5是66scrapypythonRedisscrapy-redis分布式爬RichardLawson.李斌(译).用Python[M].Python[M].WesleyChun.孙波翔(译).Pyth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《人工智能应用》教学课件-2025-2026学年浙教版(新教材)初中信息技术八年级下册
- 2025年工业元宇宙数字孪生模型转换技术
- 大学生竞聘社联部部长演讲稿
- 山区分散式清洁取暖项目中超声波热量表的部署挑战
- 识字4 中国美食 课件
- 2026年门窗采购安装合同(1篇)
- 2026年医疗影像数据存储合同协议
- 2026年医疗AI辅助诊断系统开发合同协议
- 2026年商超促销合同(1篇)
- 2026年市场股权激励合同(1篇)
- 水利工程监理部安全生产责任制度
- 市公交车公司财务制度
- 2026年1月浙江省高考(首考)历史试题(含答案)
- 监理安全保密培训课件
- 苹果公司采购部面试题目及答案
- 金属硅购销合同范本
- 工业渗滤液处理运营保障措施方案
- 雨课堂学堂在线学堂云《机电设备管理江西交职》单元测试考核答案
- 中海大卫星海洋学课件第6章 水色遥感和辐射计
- 北京市第七届中小学生气象知识竞赛题及答案
- 数字经济赋能传统产业转型路径分析
评论
0/150
提交评论