-----------------------------------------------------------学无止境------------------------------------------------------html
前言:你们好,欢迎来到誉雪飞舞的博客园,个人每篇文章都是本身用心编写,app
算不上精心可是足够用心分享个人自学知识,但愿你们可以指正我,互相学习成长。框架
转载请注明:https://www.cnblogs.com/wyl-pi/p/10510397.html学习
不少小伙伴可定都是喜欢看电影的,好比特效炫酷逼真的好莱坞大片,情节感人真挚的爱情电影,打斗激情四射的动做电影,,,,测试
因此我相信你们都有一个通问,我想看电影,可是呢到底什么电影好看啊!!有没有什么推荐之类的,好比排行榜之类的还不是不少的,url
10个左右的(多了看不完还挺难受,但太多的话根本没时间看完啊,有木有....)spa
So,咱们找一个你们都耳熟能详的豆瓣影评,其在业内仍是较有权威的,嗯,,调试
For example:code
你们应该看到了右下角的 "一周口碑榜 " 没错这个小排名我喜欢,就是说咱们想要找的,管你网页其余地方作得再华丽,宣传的多么天花乱坠仍是没有咱这个口碑榜实在啊!!!orm
So,咱们的活来了,盘它,哦不,是爬它。
玩笑归玩笑,言归正传,可能有的同志会说为何你要爬虫直接看不就行了?!我会微微一笑:“这么没技术含量的操做,请问有意思么?”(虽然说我认可我这篇随笔的技术水平也不高,
能够绝不忌讳地说,很低,But!我相信本身的水平和技术含量会越爱越高的,毕竟我毫不甘心与此。再者说就是他这个更新一周一周的,本身每次上网也去查我是以为挺麻烦的,不如
作个爬虫直接代码运行,麻烦一次方便之后,好吧若是你说我强词夺理那就是吧,随便喽。)
打开网页后,F12,点击这个按钮,而后定位到下图这个框找到它属于<table>标签下的<tbody>标签;这位后面咱们的爬取打下了铺垫。(固然这是方法之一)
方法之二:
直接快捷键Ctrl+U或者右键 “ 查看网页源代码 ” ,而后Ctrl+F查找 “ 徒手攀岩 ” ;
这下咱们就知道了咱们所要爬取网页的基本框架是什么样的了,从而进行后续的操做。
代码以下:
import requests from bs4 import BeautifulSoup import bs4 def getHtmlText(url): try: r = requests.get(url,timeout = 30) print("raise_stsus = {}".format(r.raise_for_status())) print("获取状态完毕") r.encoding = r.apparent_encoding return r.text except: print("get information with error!") def movieSoupList(movielist,demo): try: soup = BeautifulSoup(demo,"html.parser") tables = soup.find_all("table") #print("tables is {}\n\n".format(tables)) tab = tables[1] #if isinstance(tab,bs4.element.Tag): # print("yaoxi!!!!!!!!") #print("tab is {}\n\n".format(tab)) #tags = tab.find("tr") #print(type(tags)) #print("tags = {}\n".format(tags)) tags = tab.contents #print("tages {} ".format(tab.contents)) # ***** .contents 方法 ***** #print(type(tab.contents)) #//<class'list'> #i = 0 for tr in tags: #i = i+1 #print("i = {}\n".format(i)) #print("transfor finished") if isinstance(tr,bs4.element.Tag): tds = tr("td") # ***** tr("td")这步也很关键 ***** #print("tds {}".format(tds))#print("list is ok") movielist.append([tds[0].string,tds[1].string]) #print("transfor finished") #print("movielist is {}".format(movielist)) except: print("transfor error") def printMovieList(movielist,num): model = "{0:^10}\t{1:^20}" print(model.format("排名","影片名",chr(12288))) try: for i in range(num): m = movielist[i] print(model.format(m[0],m[1],chr(12288))) except: print("printMovieList error\n") def main(): num = 10 url = 'https://movie.douban.com/' movielist = [] demo = getHtmlText(url) movieSoupList(movielist,demo) #print("movielist is \n{}\n\n".format(movielist)) printMovieList(movielist,num) main()
我在代码里的注释也很清楚了,若是还不懂能够评论或私信我,里面有我当时调试的测试代码
删除了一部分,剩下的大部分都注释掉了。若是有的童鞋们想试试能够像我这样测试,而后一步
步接近本身想要的样子,直至完成项目。
运行结果就是这样:
总结:
这个方法的可编辑性较高容易理解很简单,但相对应的短板就是代码冗长编写麻烦费时若是出错很差修改,
总之中规中矩,下一篇文章我将带您欣赏一下Python的Xpath方法的魅力所在。
若是以为个人文章还不错,关注一下,顶一下 ,我将会用心去创做更好的文章,敬请期待。