zoukankan      html  css  js  c++  java
  • python爬取豆瓣视频信息代码

      这里是爬取豆瓣视频信息,用pyquery库(jquery的python库)。


    一:代码

    from urllib.request import quote
    from pyquery import PyQuery as pq
    import requests
    import pandas as pd
    
    
    def get_text_page(movie_name):
    	'''
    	函数功能:获得指定电影名的源代码
    	参数:电影名
    	返回值:电影名结果的源代码
    	'''
    	url = 'https://www.douban.com/search?q=' + movie_name
    	headers = {
    		'Host' : 'www.douban.com',
    		'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',
    	}
    	r = requests.get(url,headers = headers,timeout=5)
    	return r.text
    
    
    def get_last_url(this_text):
    	'''
    	函数功能:根据指定的源代码得到最终的网页地址
    	参数:搜索结果源代码
    	返回值:最终的网页地址
    	'''
    	doc = pq(this_text)
    	lis = doc('.title a').items()
    	k = 0
    	this_str = ''
    	for i in lis:
    		# print('豆瓣搜索结果为:{0}'.format(i.text()))
    		# print('地址为:{0}'.format(i.attr.href))
    		# print('
    ')
    		if k == 0:
    			this_str = i.attr.href
    		k += 1
    	return this_str
    
    
    def the_last_page(this_url):
    	'''
    	函数功能:获得最终电影网页的源代码
    	参数:最终的地址
    	返回值:最终电影网页的源代码
    	'''
    	headers = {
    		'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',
    	}
    	r = requests.get(this_url,headers = headers,timeout=20)
    	return r.text
    
    
    def the_last_text(this_text,movie_name):
    	'''
    	函数功能:获得每一项的数据
    	参数:爬取页面的源代码
    	返回值:返回空
    	'''
    	doc = pq(this_text)
    	# 获取标题
    	title = doc('#content h1').text()
    	# 获取海报
    	photo = doc('.nbgnbg img')
    	photo_url = photo.attr.src
    	r = requests.get(photo_url)
    	with open('{m}.jpg'.format(m = movie_name),'wb') as f:
    		f.write(r.content)
    	# 电影信息
    	message = doc('#info').text()
    	# 豆瓣评分
    	grade = doc('#interest_sectl').text()
    	# 剧情
    	things = doc('.related-info').text()
    	with open('{0}.txt'.format(movie_name),'w+') as f:
    		try:
    			f.writelines([title,'
    ','
    
    ',message,'
    
    ',grade,'
    
    ',things])
    		except:
    			f.writelines([title,'
    ','
    
    ',message,'
    
    ',grade])
    	# 演员
    	# 演员名
    	name = []
    	person_name  = doc('.info').items()
    	for i in person_name:
    		name.append(i.text())
    	# 演员图片地址
    	person_photo = doc('#celebrities')
    	j = 0
    	for i in person_photo .find('.avatar').items():
    		m = i.attr('style')
    		person_download_url = m[m.find('(') + 1:m.find(')')]
    		# 下载演员地址
    		r = requests.get(person_download_url)
    		try:
    			with open('{name}.jpg'.format(name = name[j]),'wb') as f:
    				f.write(r.content)
    		except:
    			continue
    		j += 1
    
    
    def lookUrl(this_text,my_str):
    	'''
    	函数功能:获得观看链接
    	参数:爬取页面的源代码
    	返回值:返回空
    	'''
    	doc = pq(this_text)
    	all_url = doc('.bs li a').items()
    	movie_f   = []
    	movie_url = []
    	for i in all_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=',')
    
    
    def main():
    	name = input('')
    	my_str = name
    	movie_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.独立日

  • 相关阅读:
    crontab 移动日志-超越昨天的自己系列(12)
    java进程性能分析步骤-超越昨天的自己系列(11)
    Linux 使用 you-get 指令下载网页视频
    Git git rm和git rm --cached
    Git .gitignore中已添加文件路径,但仍未被忽略
    Android 系统添加SELinux权限
    git 删除目录及子目录下的同名文件
    Android 查看和修改网络mtu
    git 设置git用户名和邮箱,并生成秘钥
    RK3288 添加普通串口uart1和uart3
  • 原文地址:https://www.cnblogs.com/ITXiaoAng/p/11871321.html
Copyright © 2011-2022 走看看