2021-01-04 10:46:56 阅读(626)
标签(空格分隔):python爬虫1。爬网页,获取所需内容。我们今天要爬的是豆瓣电影top250页,如下所示:我们需要的是电影分类,我们可以通过查看源代码来分析我们需要的东西。直接进入主题吧!知道我们需要的内容在哪里,然后先用我们python强大的request库获取网页内容。获取内容后,使用易于使用的lxml库来分析网页内容,然后获取我们的内容进行下一步操作。先贴出使用request库和lxml分析的代码defget_page(i): url='https://movie.douban.com/top250start={}&filter='.format(i) html=requests.get(url).content.decode('utf-8') #使用request库获取网页内容 selector=etree.HTML(html) #使用lxml库提取内容 ''' 内容的一部分可以通过观察页面找到 ''' content=selector.xpath('//div[@class="info"]/div[@class="bd"]/p/text()') print(content) foriincontent[1::2]: print(str(i).strip().replace('nr','')) #print(str(i).split('/')) i=str(i).split('/') i=i[len(i)-1] key=i.strip().replace('n','').split('')#使用这里的strip和replace的目的是去除空间和空行 print(key)通过获得的内容,我们发现一部电影的所有内容都是用‘/’分开的,我们只需要提取电影分类中的东西,所以我们需要使用i=str(i).split('/')将内容分成几个内容,因为电影分类排在最后,所以我们通过i=i[len(i)-1]获得分隔后的最后一项是我们需要的电影分类,以及我们需要完成的最后一步,因为一部电影通常有多个电影分类的标签,所以我们必须继续分离获得的电影分类,观察可以知道电影分类之间只有一个空间,所以我们可以使用以下代码分离每个分类:key=i.strip().replace('n','').split('')2、下一步是将电影分类存储在mysql数据库中,以便进行以下数据分析。在这里,我们使用pymysql连接mysql数据库。首先,我们需要在mysql数据库中建立一个表:然后我们通过pysql将数据存储到数据库中,代码如下:首先,连接数据库:#连接mysql数据库connn=pymysql.connect(host='localhost',user='root',passwd='2014081029',db='mysql',charset='utf8') #user是数据库的名称,passwd是数据库的密码,通常将字符集定义为utf8,否则,存入数据库很容易遇到编码问题=conn.cursor() #获取操作游标cur.execute('usedouban') #使用douban这个数据库在保存到数据库之前,我们还需要做的另一件事,那就是对250部电影的分类进行总结,因此,我们定义了一个字典来统计电影分类的数量,这里的代码是get_page函数的一部分,代码如下: foriincontent[1::2]: print(str(i).strip().replace('nr','')) #print(str(i).split('/')) i=str(i).split('/') i=i[len(i)-1] key=i.strip().replace('n','').split('') print(key) foriinkey: ifinotindouban.keys(): douban[i]=1 else: douban[i] =然后定义一个保存函数,执行插入操作。如果插入失败,则执行回滚操作。操作完成后记得使用conn.close()和cur.close()关闭数据库连接,代码如下:defsave_mysql(douban): print(douban) #douban在主函数中定义的字典 forkeyindouban: print(key) print(douban[key]) ifkey!='': try: sql='insertdouban(类别,数量)value(' "'" key "'," "'" str(douban[key]) "'" ');' cur.execute(sql) conn.commit() except: print('插入失败') conn.rollback()三、首先使用matplotlib进行数据可视化操作,将电影分类和每个分类的数量从数据库中存储在一个列表中,然后使用matplotlib进行可视化操作,具体如下:defpylot_show(): sql='select*fromdouban;' cur.execute(sql) rows=cur.fetchall() #读取表中的所有字段 count=[] #每个分类的数量 category=[] #分类 forrowinrows: count.append(int(row[2])) category.append(row[1]) y_pos=np.arange(len(category)) #定义y轴坐标数 plt.barh(y_pos,count,align='center',alpha=0.4) #Alpha图表的填充不透明度(0~1) plt.yticks(y_pos,category) #标记y轴上的分类名 forcount,y_posinzip(count,y_pos): #图中显示分类数的位置是柱状图尾部显示的数字 plt.text(count,y_pos,count, horizontalalignment='center',verticalalignment='center',weight='bold') plt.ylim( 28.0,-1.0)#可视化范围,相当于规定y轴范围 plt.title(u'豆瓣电影250') #图表的标题 plt.ylabel(u'电影分类') #标记图表y轴 plt.subplots_adjust(bottom=0.15) plt.xlabel(u'分类次数') #标记图表x轴 plt.savefig('douban.png') #以下是matplotlib保存图片的一些简单使用,首先,我们需要导入matplotlib和numpy包importnumpyasnpimportmatpliblib.这次pyplotasplt的可视化是柱状图,这里给出brah()函数的定义:barh()主要功能:制作横向条形图,横向条的矩形大小为:left,left width,bottom,bottom height参数:barh(bottom,width,he
以上就是关于如何爬取豆瓣电影top250数据?的相关介绍,更多如何爬取豆瓣电影top250数据?相关内容可以咨询我们或者浏览页面上的推荐内容。我们将让你对如何爬取豆瓣电影top250数据?有更深的了解和认识。
推荐阅读
最新文章
猜你喜欢以下内容:
一 客户顾问-张三 一