1. 首页
  2. IT资讯

python爬虫-python实现抓取腾讯视频所有电影

“u003Cdivu003Eu003Ch1u003Eu003Cstrongu003Epython爬虫-python实现抓取腾讯视频所有电影u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fcb3a400381a940e0bd8d5e5a8469663c” img_width=”1203″ img_height=”602″ alt=”python爬虫-python实现抓取腾讯视频所有电影” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpreu003E# -*- coding: utf-8 -*-u003Cbru003Eimport reu003Cbru003Eimport urllib2u003Cbru003Efrom bs4 import BeautifulSoupu003Cbru003Eimport string, timeu003Cbru003Eimport pymongou003Cbru003E u003Cbru003ENUM = 0 #全局变量,电影数量u003Cbru003Em_type = u” #全局变量,电影类型u003Cbru003Em_site = u’qq’ #全局变量,电影网站u003Cbru003E u003Cbru003E#根据指定的URL获取网页内容u003Cbru003Edef gethtml(url):u003Cbru003E req = urllib2.Request(url)u003Cbru003E response = urllib2.urlopen(req)u003Cbru003E html = response.read()u003Cbru003E return htmlu003Cbru003E”’u003Cbru003E在学习过程中有什么不懂得可以加我的python学习交流扣扣qun,934109170,群里有不错的学习教程与开发工具。u003Cbru003E”’ u003Cbru003E u003Cbru003E#从电影分类列表页面获取电影分类u003Cbru003Edef gettags(html):u003Cbru003E global m_typeu003Cbru003E soup = BeautifulSoup(html) #过滤出分类内容u003Cbru003E #print soupu003Cbru003E #<ul class=”clearfix _group” gname=”mi_type” gtype=”1″>u003Cbru003E tags_all = soup.find_all(‘ul’, {‘class’ : ‘clearfix _group’ , ‘gname’ : ‘mi_type’})u003Cbru003E #print len(tags_all), tags_allu003Cbru003E #print str(tags_all[1]).replace(‘\n’, ”)u003Cbru003E u003Cbru003E #<a _hot=”tag.sub” class=”_gtag _hotkey” href=”http:u002Fu002Fv.qq.comu002Flistu002F1_0_-1_-1_1_0_0_20_0_-1_0.html”title=”动作” tvalue=”0″>动作<u002Fa>u003Cbru003E re_tags = r'<a _hot=\”tag\.sub\” class=\”_gtag _hotkey\” href=\”(.+?)\” title=\”(.+?)\” tvalue=\”(.+?)\”>.+?<u002Fa>’u003Cbru003E p = re.compile(re_tags, re.DOTALL)u003Cbru003E u003Cbru003E tags = p.findall(str(tags_all[0]))u003Cbru003E if tags:u003Cbru003E tags_url = {}u003Cbru003E #print tagsu003Cbru003E for tag in tags:u003Cbru003E tag_url = tag[0].decode(‘utf-8’)u003Cbru003E #print tag_urlu003Cbru003E m_type = tag[1].decode(‘utf-8’)u003Cbru003E tags_url[m_type] = tag_urlu003Cbru003E u003Cbru003E else:u003Cbru003E print “Not Find”u003Cbru003E return tags_urlu003Cbru003E u003Cbru003E#获取每个分类的页数u003Cbru003Edef get_pages(tag_url):u003Cbru003E tag_html = gethtml(tag_url)u003Cbru003E #div class=”paginatoru003Cbru003E soup = BeautifulSoup(tag_html) #过滤出标记页面的htmlu003Cbru003E #print soupu003Cbru003E #<div class=”mod_pagenav” id=”pager”>u003Cbru003E div_page = soup.find_all(‘div’, {‘class’ : ‘mod_pagenav’, ‘id’ : ‘pager’})u003Cbru003E #print div_page #len(div_page), div_page[0]u003Cbru003E u003Cbru003E #<a class=”c_txt6″ href=”http:u002Fu002Fv.qq.comu002Flistu002F1_2_-1_-1_1_0_24_20_0_-1_0.html” title=”25″><span>25<u002Fspan><u002Fa>u003Cbru003E re_pages = r'<a class=.+?><span>(.+?)<u002Fspan><u002Fa>’u003Cbru003E p = re.compile(re_pages, re.DOTALL)u003Cbru003E pages = p.findall(str(div_page[0]))u003Cbru003E #print pagesu003Cbru003E if len(pages) > 1:u003Cbru003E return pages[-2]u003Cbru003E else:u003Cbru003E return 1u003Cbru003E u003Cbru003E u003Cbru003Edef getmovielist(html):u003Cbru003E soup = BeautifulSoup(html)u003Cbru003E u003Cbru003E #<ul class=”mod_list_pic_130″>u003Cbru003E divs = soup.find_all(‘ul’, {‘class’ : ‘mod_list_pic_130’})u003Cbru003E #print divsu003Cbru003E for div_html in divs:u003Cbru003E div_html = str(div_html).replace(‘\n’, ”)u003Cbru003E #print div_htmlu003Cbru003E getmovie(div_html)u003Cbru003E u003Cbru003E u003Cbru003Edef getmovie(html):u003Cbru003E global NUMu003Cbru003E global m_typeu003Cbru003E global m_siteu003Cbru003E u003Cbru003E re_movie = r'<li><a class=\”mod_poster_130\” href=\”(.+?)\” target=\”_blank\” title=\”(.+?)\”><img.+?<u002Fli>’u003Cbru003E p = re.compile(re_movie, re.DOTALL)u003Cbru003E movies = p.findall(html)u003Cbru003E if movies:u003Cbru003E conn = pymongo.Connection(‘localhost’, 27017)u003Cbru003E movie_db = conn.dianyingu003Cbru003E playlinks = movie_db.playlinksu003Cbru003E #print moviesu003Cbru003E for movie in movies:u003Cbru003E #print movieu003Cbru003E NUM += 1u003Cbru003E print “%s : %d” % (“=” * 70, NUM)u003Cbru003E values = dict(u003Cbru003E movie_title = movie[1],u003Cbru003E movie_url = movie[0],u003Cbru003E movie_site = m_site,u003Cbru003E movie_type = m_typeu003Cbru003E )u003Cbru003E print valuesu003Cbru003E playlinks.insert(values)u003Cbru003E print “_” * 70u003Cbru003E NUM += 1u003Cbru003E print “%s : %d” % (“=” * 70, NUM)u003Cbru003E u003Cbru003E #else:u003Cbru003E # print “Not Find”u003Cbru003E u003Cbru003Edef getmovieinfo(url):u003Cbru003E html = gethtml(url)u003Cbru003E soup = BeautifulSoup(html)u003Cbru003E u003Cbru003E #pack pack_album album_coveru003Cbru003E divs = soup.find_all(‘div’, {‘class’ : ‘pack pack_album album_cover’})u003Cbru003E #print divs[0]u003Cbru003E u003Cbru003E #<a href=”http:u002Fu002Fwww.tudou.comu002Falbumplayu002F9NyofXc_lHIu002F32JqhiKJykI.html” target=”new” title=”《血滴子》独家纪录片” wl=”1″> <u002Fa>u003Cbru003E re_info = r'<a href=\”(.+?)\” target=\”new\” title=\”(.+?)\” wl=\”.+?\”> <u002Fa>’u003Cbru003E p_info = re.compile(re_info, re.DOTALL)u003Cbru003E m_info = p_info.findall(str(divs[0]))u003Cbru003E if m_info:u003Cbru003E return m_infou003Cbru003E else:u003Cbru003E print “Not find movie info”u003Cbru003E u003Cbru003E return m_infou003Cbru003E u003Cbru003E u003Cbru003Edef insertdb(movieinfo):u003Cbru003E global connu003Cbru003E movie_db = conn.dianying_atu003Cbru003E movies = movie_db.moviesu003Cbru003E movies.insert(movieinfo)u003Cbru003E u003Cbru003Eif __name__ == “__main__”:u003Cbru003E global connu003Cbru003E u003Cbru003E tags_url = “http:u002Fu002Fv.qq.comu002Flistu002F1_-1_-1_-1_1_0_0_20_0_-1_0.html”u003Cbru003E #print tags_urlu003Cbru003E tags_html = gethtml(tags_url)u003Cbru003E #print tags_htmlu003Cbru003E tag_urls = gettags(tags_html)u003Cbru003E #print tag_urlsu003Cbru003E u003Cbru003E u003Cbru003E for url in tag_urls.items():u003Cbru003E print str(url[1]).encode(‘utf-8’) #,url[0]u003Cbru003E maxpage = int(get_pages(str(url[1]).encode(‘utf-8’)))u003Cbru003E print maxpageu003Cbru003E u003Cbru003E for x in range(0, maxpage):u003Cbru003E #http:u002Fu002Fv.qq.comu002Flistu002F1_0_-1_-1_1_0_0_20_0_-1_0.htmlu003Cbru003E m_url = str(url[1]).replace(‘0_20_0_-1_0.html’, ”)u003Cbru003E movie_url = “%s%d_20_0_-1_0.html” % (m_url, x)u003Cbru003E print movie_urlu003Cbru003E movie_html = gethtml(movie_url.encode(‘utf-8’))u003Cbru003E #print movie_htmlu003Cbru003E getmovielist(movie_html)u003Cbru003E time.sleep(0.1)u003Cbru003Eu003Cbru003Eu003Cu002Fpreu003Eu003Cu002Fdivu003E”

原文始发于:python爬虫-python实现抓取腾讯视频所有电影

主题测试文章,只做测试使用。发布者:第一丶坑神,转转请注明出处:http://www.cxybcw.com/10900.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code