Movielens/IMDB电影数据分析(二)

经过磕磕绊绊的三天调试,终于算是独立调试出来自己写的第一个爬虫程序,虽然程序写的比较粗糙,结果也有些瑕疵,但总算是有个开始了。

之前,零星的看过爬虫的一些知识点,但是比较皮毛,当自己真的动手爬取自己想要的数据时,基本是从零开始。爬虫一般分为三步:请求网页、解析网页、存储数据。我分别卡在了解析网页和存储数据上。最后经过查找摸索,使用主流的lxml解析网页,选取方法为XPath,数据存储为需要的csv格式。

解析网页时遇到的最大问题是list index out of range,经过查找,发现获取的list中有空值,例如list的长度只有10,而index为11的时候就会报错。一开始以为是原数据中本身有空值,但经过排查发现原数据并没有空值,而是爬取的过程中出现错误导致,主要原因为XPath的路径有问题,最初是直接使用xpathhelper复制路径获取,视频学习的时候发现,这样做往往都会出错,于是参照XPath的谓语写法自己写路径,问题得以解决。此外,遇到xpath返回的内容为空,经过查找,更换请求头解决问题

数据存储的适合遇到的问题其实就是不会存储,按照网上的教程,发现压根不行啊。经过print发现,将解析后的parse_html(html)结果强制list,其list中的元素为单个字典,每个字典中存储的元素为单部电影的信息。于是,其存储过程就是将字典存入CSV,参照教程,暂时解决这个问题。

爬虫获取的csv数据存在以下瑕疵:

如图所示,首先XPatha解析后的年份为“(1993)”,存储到csv为-1993。其次是序列电影的标签,如“Taken(Ⅰ)”,其通过XPath发现“(Ⅰ)”跟年份存在一个Tag里,暂时没想好怎么解决该问题。

后续,优化代码,尽量解决上述问题,其次尝试使用BeautifulSoup解析网页,尝试将数据存储为txt、json和SQL。

突然想到,是不是可以通过pandas的连接,将其他的6个CSV文件合并成为imdb10000。。。。。。???

猜你喜欢

转载自blog.csdn.net/qq_41996090/article/details/87885412