Python爬取豆瓣视频信息代码实例
这篇文章主要介绍了Python爬取豆瓣视频信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
这里是爬取豆瓣视频信息,用pyquery库(jquery的python库)。
一:代码
fromurllib.request importquotefrompyquery importPyQueryaspqimportrequestsimportpandasaspddefget_text_page (movie_name):'' '函数功能:获得指定电影名的源代码参数:电影名返回值:电影名结果的源代码' '' url= 'https://www.douban.com/search?q='+ movie_nameheaders={ 'Host':'www.douban.com', 'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.90Safari/537.36', } r=requests.get(url,headers=headers, timeout=5)returnr.textdefget_last_url( this_text):'' '函数功能:根据指定的源代码得到最终的网页地址参数:搜索结果源代码返回值:最终的网页地址' '' doc=pq(this_text)lis=doc( '.titlea').items()k=0this_str= '' foriinlis:#print('豆瓣搜索结果为:{0}'.format( i.text()))#print('地址为:{0}'.format(i.attr .href))#print('\n')ifk==0: this_str=i.attr.hrefk+=1 returnthis_strdefthe_last_page( this_url):'' '函数功能:获得最终电影网页的源代码参数:最终的地址返回值:最终电影网页的源代码' '' headers={ 'User-Agent':'Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/75.0.3770.90Safari/537.36', } r=requests.get(this_url,headers= headers,timeout=20)returnr.textdefthe_last_text( this_text,movie_name):'' '函数功能:获得每一项的数据参数:爬取页面的源代码返回值:返回空' '' doc=pq(this_text)#获取标题title=doc( '#contenth1').text()#获取海报photo= doc('.nbgnbgimg')photo_url=photo.attr .srcr=requests.get(photo_url)withopen( '{m}.jpg'.format(m=movie_name), 'wb')asf:f.write(r.content)#电影信息message= doc('#info').text()#豆瓣评分grade=doc( '#interest_sectl').text()#剧情things= doc('.related-info').text()withopen( '{0}.txt'.format(movie_name),'w+')asf: try:f.writelines([title,'\n','\n\n', message,'\n\n',grade,'\n\n', things ])except:f.writelines([title,'\n', '\n\n',message,'\n\n',grade ])#演员#演员名name=[]person_name= doc('.info').items()foriin person_name:name.append(i.text())#演员图片地址person_photo= doc('#celebrities')j=0 foriinperson_photo.find('.avatar').items(): m=i.attr('style')person_download_url= m[m.find('(')+1:m.find(')')]#下载演员地址r= requests.get(person_download_url)try: withopen('{name}.jpg'.format(name= name[j]),'wb')asf:f.write(r.content)except: continuej+=1deflookUrl(this_text, my_str):'' '函数功能:获得观看链接参数:爬取页面的源代码返回值:返回空' '' doc=pq(this_text)all_url=doc( '.bslia').items()movie_f=[]movie_url=[] foriinall_url:movie_f.append(i.text())movie_url .append(i.attr.href)dataframe=pd.DataFrame({ '观看平台':movie_f, '观看地址':movie_url })dataframe.to_csv( "{movie_name}的观看地址.csv".format( movie_name=my_str),index=False, encoding='utf_8_sig',sep=',')defmain(): name=input('')my_str=namemovie_name= quote(my_str)page_text= get_text_page(movie_name)#得指定电影名的源代码last_url= get_last_url(page_text)#根据指定的源代码得到最终的网页地址page_text2= the_last_page(last_url)#获得最终电影网页的源代码the_last_text( page_text2,my_str)#获得每一项的数据lookUrl( page_text2,my_str)#得到并处理观看链接main()
二:结果如下(部分例子)
1.输入天气之子
2.输入百变小樱魔法卡
必须是已经上映的电影才有观看地址
3.独立日
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。