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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。