菜鸟的挣扎

1.11

爬了八个小时的爬虫

菜鸟的挣扎_第1张图片
给我爬啊靠(இдஇ; )

1.11-1.13

爬虫和数据清洗偏差太大,白爬了,八小时,我裂开ಥ_ಥ

1.13

后知后觉,吸取教训,那就先爬几半条数据test
修改爬虫,name、inspect等等
基本得到想要结果,若有问题以后需要再改。。。。。。

1.14

数据清洗,修改build_data.py,各种地方需要改
主要矛盾——写回mongodb——未解决待解决——到十一点半多,算是解决了吧,是 农村包围城市 ,写入到了同一数据库下的不同集合中即medical下的result集合,区别于原来的data集合,这样做回避了一些比如原来数据的删除问题,但是主要是为了导出json文件,就这样吧
其次——acompany不返回值——用双向最大匹配法无返回值,不知用意何在,暂时不用,直接切了成组返回,暂时这样,以后出了问题再说。。。
Symptom分词不对——first_name大概可用symptom代替,始终要用到, 路径问题,读取问题,编码问题——解决中,不太会——路径、读取、编码搞定,然后无值返回,我炸了。。——发现压根不是那么回事,还是得从源头上改,直接改爬虫爬取下的内容,有的没有内容有的很多。。无所谓了,就这样,后面都不一定用的上,再说
Check无返回值——待解决——感觉问题仍是出在爬虫上,研究了下网页后发现没啥办法,要是和上一个symptom的解决办法一样的这个就更离谱,基本都无返回值,继续研究——竟然找到了源头,原来不是在具体的页面,而是在主页面里爬的,symptom也是这样,不过和我上面的解决方法差不了多少,先不改,改完这个——ok
还有细枝末节的小问题,不想改了

1.15

acompany——上面说没有用分词,实际上还得用,双向最大匹配法,改一下返回长值
attributes里面丢失了一个common_drug数据,没整明白怎么回事,选择性放弃。。。
发现今天大部分时间都浪费了,windows更新,更新三遍还失败。。。。。。
需要py2neo库,于是安装,安装过程中出现一些warning,但是顺利安完了就没在意,通过pip list然后就觉得有点不对,果然,我spyder打不开了,炸了,找寻方法
在这里插入图片描述
在这里插入图片描述
果然是刚才的warning的问题,
原因:prompt-toolkit版本不对
解决方法:安装符合要求的版本 pip install prompt-toolkit==1.0.15

然后它告诉我py2neo就需要另一个版本的toolkit,要不我就不能用,好家伙,你死我活水火不容——解决办法——安装低版本的——卸载——pip install py2neo==3.1.2
提供解决方案的人是这么说的,好家伙,我悟了!(后来发现没有这么简单)
在这里插入图片描述
下面终于可以是neo4j时间
Link Start!
在这里插入图片描述
。。。 。。。

404。。。排查故障,结果好像是说py2neo版本太低了,我??? 说pip一个4.3.0版本,心想还好和我刚才的不一样,就卸了重装,装完后傻了
菜鸟的挣扎_第2张图片
好家伙,又把toolkit升级了??果然spyder又打不开了,转了一圈又回来了呗。。没有找到好的解决办法,实际上他们就是水火不容。。然后又重复了上边的步骤一遍
怎么搞啊。。。

1.16

好家伙,直接16号,简单记一下,从出问题到现在,是一晚上加一上午,试了很多办法,我甚至在一个库一个库的给他们匹配版本(鬼知道我是不是疯了)uninstall,install,等等,其间升级了spyder,后来发现问题越来越严重。。。最终真没法了——整个把Anaconda给uninstall掉,不知道行不行,卸载20分钟,下载,install,完事打开spyder(spyder4还真不错,但没心情研究)继续安装py2neo,稍微调整了一下,没问题,连接neo4j
!!!连上了!!!
我要哭了(இдஇ; )整天天正经事没搞一点,全整这些破事了,还是最看好的spyder出了问题,网上通篇没有解决办法,起码国内网站没找到,我这大概很小概率发生的问题,写一篇csdn留作备用,终于可以继续了(┯_┯)
后面——json文件导入neo4j建立节点,关系,属性
还有发现上面的遗留问题——check——导入后发现check节点内容不对——数据存储问题——还是回到data_spider和build_data修改——ok
来稍微看一下图谱,这是20条数据呈现的其中两类关系其图谱的样子,等整好其他功能完整的全部大概打算是10000条数据(这些节点的一个个小球还是很好玩的讲真,很Q弹)
菜鸟的挣扎_第3张图片

构建问答系统,基于规则问答似乎没什么复杂算法,后面步骤没啥大问题,具体以后再研究,果然数据是最麻烦的吗(இдஇ; )——至此算是告一段落——果然我还是太菜——暂时不知道改进的方向,大体就是想在查询系统上做点花样,还是相对棘手——所以暂时先不爬取大量数据(因为爬要八小时起步,我觉得导入neo4j也得六七个小时起步。。后面操作也会麻烦)——这篇就记录到这——就这样 ~

1.17

后记。。。昨晚上在看图谱发现check词条多了acompany?——那就改爬虫——完全没办法。。xpath取到的标签两个一模一样。。搞了一上午——农村包围城市——取所有a标签下的href得到网址存入inspect,同时爬取inspect的所有链接存入medical下的jc集合中,在build_data里面定义两个函数,一个更新jc把检查项的名字爬出来,update,另一个循环比较inspect的链接和jc中的是否有相同的,若有则返回name存入——成了!看了下前面这个check是我改的最多的,基本各个阶段都在改这玩意,然后还是先提前爬出数据来吧
12:47开始爬 数据
19:05爬完了
用了七个小时好像快了好多欸,在mongodb里一查,原来只有8666条数据。。。这才几天网页变动也太了吧,就这样吧也不少了,害,问题不大。
然而问题很大!
爬完后我兴高采烈开始数据清洗,start。。。。。。二十多秒一条数据,赶紧粗略算了一下8666条数据,往快了算也至少得 50个小时 这是我能处理的数据???我感觉大概是改了check的那点算法的原因,因为每个数据要多一步与jc中的三千多条网址匹配获取name的步骤,但没办法啊,然后我想要不就让他跑吧。。结果程序错误了,搜了一下
pymongo.errors.CursorNotFound: Cursor not found, cursor id: 124891571478
原因:
默认 mongo server维护连接的时间窗口是十分钟
默认 单次从 server获取数据是101条或者 大于1M小于16M的数据
所以默认情况下,如果10分钟内未能处理完数据,则抛出该异常。
解决办法:

  1. 修改每批次获取数据量的条数,即batch size:
    collection.find(condition).batch_size(5)
    批量数需 估算十分钟内能处理的数据量
  2. 延长超时时间 需显示的关闭cursor

但我觉得我没办法跑这个数据。。想找找看有没有代跑数据的,好麻烦啊,我真是不想整了,再说吧,再说。

1.18

昨晚就在想明天试试把那个check的两个函数那个更新集合jc的拿出来到__init__(self)下面应该能加快速度吧,因为我觉得在main里的话每处理一条数据他都要执行一次,会让费大量时间,但是感觉可能也快不了多少,结果今天一试!!这简直,哈哈快到起飞,事实证明确实是这个地方的原因。处理完,导出json,ok
开心

你可能感兴趣的:(笔记)