当前位置: 首页 > 科技观察

豆瓣音乐、微博、阳光电影(附码)

时间:2023-03-22 13:23:48 科技观察

1.豆瓣音乐今天在爬豆瓣音乐top250,比较简单,主要是为了练习。1.添加了请求头,但是一开始没有添加,调试了几次突然没有数据了。添加请求头后,一开始不行,后来就好了,可能是网络原因;2、这次是爬取到信息页的数据上次爬取的电影没有使用这种方法,丢失了部分数据;三、数据预处理大量使用if函数数据分析1.部分数据见上图2.华人音乐作者还是很多的。3、随着音乐设备和网络的普及,流行音乐的发展,可以看到2000年以后的作品越来越多,2010年就主动式微了(经典就是经典,不能吐槽一下现在的音乐)4.风格大家都可以可以看到,流行、摇滚、民歌占了一半以上。5.最后,我做了一首周杰伦的《不能说的秘密》的歌作为词云。想起来,都是小时候的回忆。代码片段importrequestsimportrefombs4importBeautifulSoupimporttimeimportpymongoclient=pymongo.MongoClient('localhost',27017)douban=client['douban']musictop=douban['musictop']headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/55.0.2883.87Safari/537.36'}urls=['https://music.douban.com/top250?start={}'.format(str(i))foriinrange(0,250,25)]defget_url_music(url):wb_data=requests.get(url,headers=headers)soup=BeautifulSoup(wb_data.text,'lxml')music_hrefs=soup.select('a.nbg')formusic_hrefinmusic_hrefs:get_music_info(music_href['href'])time.sleep(2)2.微打赏网站分析打开网站,翻页看是否是post请求,好办,直接输入参数,切换页面即可这里可以翻页。json格式,这里的post返回的是json数据,只是解析json数据,tips:看预览,解析会呼呼作响。这里需要提取事件的名称、id和参与打赏的人数。这将在后面的详细页面中使用。详细页面还是post,还是json数据。这里的参数pro_id是之前爬取的id,这个页面有20条信息。根据之前参与打赏的人数构造多少页,继续使用参数。代码片段importrequestsimportjsonimportmathdefget_sup_info(url,page):params={'ajaxtype':1,'page':page,'category':1,'pageSize':8}cookies={'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/57.0.2987.133Safari/537.36','Cookie':'acw_tc=AQAAAKLQ3U/WTAYAggq7PZ24WOlm9vQW;PHPSESSID=r0nbvk7hppjftegk4fpt9cu535;_uab_collina=150094753858198811653567;mdswv=v1.0;mdsa=MD-STICS-5976a44746eca;mdss=6-o;mdsf=md;mdsff=www_so_com;}html=requests.post(url,data=params,headers=cookies)json_data=json.loads(html.text)des=json_data['des']fordataindes:name=data['name']id=data['id']pay_count=data['pay_count']all_page=math.ceil(int(pay_count)/20)foriinrange(1,int(all_page)+1):get_app_info(i,id,name)3.阳光电影爬虫分析这里涉及跨页面爬取,需要理清爬虫的思路。首先打开网站,需要爬取前11类的电影数据。经典电影格式不一样,爬取的时候过滤掉了。进入电影列表页面后,定时抓取页数和电影分类标签,构造分页url,然后抓取电影名称和url。最后在详情页爬取电影的下载地址,爬取结果如下:html=etree.HTML(res.text)movie_resource=html.xpath('//tbody//tr/td/a/text()')[0]writer.writerow((cate_name,cate_url,movie_name,url,movie_resource))打印(电影资源)