好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

【爬虫实战】获取最新一期青年大学习的结束图

今天是认真看论文的霏霏,奖励自己摸一会儿鱼。其实有时候闲下来看一点和实验室无关的东西还挺放松的,就和打球、玩游戏没有什么区别。之前写的东西吧,虽然大部分没什么技术含量,也没什么实际用处,但是我感觉还挺好玩的。其实Python本来就挺好玩的,因为比较简单,对新手也比较友好。至少不会像C一样,让我想起大一那会儿被黑压压的控制台支配的恐惧。很多时候,稍微写那么几行代码,就能完成一个小任务,及时的反馈也能让人有一些成就感。

原理

打开青年大学习的首页,网址:

 http://news.cyol测试数据/node_67071.htm  

进入最近一期视频,打开开发者工具,可以看到请求列表中包含了我们想要的结束图:

这期视频的URL为:

 http://h5.cyol测试数据/special/daxuexi/lfvuyhztrd/index.html  

结束图的URL为:

 http://h5.cyol测试数据/special/daxuexi/lfvuyhztrd/images/end.jpg  

那么现在思路就很清晰了,先获取到最新一期青年大学习的URL,然后把URT末尾的 index.html 替换为 image/end.jpg 即可。因为比较简单,所以多写几种实现方法。

获取HTML

方法一:用Python标准库urllib

 from?urllib.request?import?urlopen  html?=?urlopen('http://news.cyol测试数据/node_67071.htm') print(html.read().decode('utf-8'))  

方法二:用Reuqests

 import?requests  r?=?requests.get('http://news.cyol测试数据/node_67071.htm') print(r.text)  

解析HTML

方法一:用BeautifulSoup

 import?requests from?bs4?import?BeautifulSoup  r?=?requests.get('http://news.cyol测试数据/node_67071.htm') bs?=?BeautifulSoup(r.text,?'html.parser') image_url?=?bs.find('a',?class_="transition")['href'].rsplit('/',?1)[0]?+?'/images/end.jpg'  

方法二:用lxml

 import?requests from?lxml?import?etree  r?=?requests.get('http://news.cyol测试数据/node_67071.htm') html?=?etree.HTML(r.text) image_url?=?html.xpath('/html/body/div[4]/dl/dd/ul/li[1]/a/@href')[0].rsplit('/',?1)[0]?+?'/images/end.jpg'  

保存图片

用Python标准库urllib

 from?urllib.request?import?urlretrieve urlretrieve(image_url,?'学习,学个屁.jpg')  

用Requests

 image?=?requests.get(image_url).content with?open('学习,学个屁.jpg','wb')?as?f: ??f.write(image)  

不保存,直接显示

用Requests和PIL

 from?PIL?import?Image from?io?import?BytesIO  r?=?requests.get(image_url) image?=?Image.open(BytesIO(r.content)) image.show()  

用skimage

 from?skimage?import?io  image?=?io.imread(image_url) io.imshow(image) io.show()  

一共也就不到十行代码,能干的事情还挺多的。

 import?requests from?bs4?import?BeautifulSoup from?urllib.request?import?urlretrieve  r?=?requests.get('http://news.cyol测试数据/node_67071.htm') bs?=?BeautifulSoup(r.text,?'html.parser') image_url?=?bs.find('a',?class_="transition")['href'].rsplit('/',?1)[0]?+?'/images/end.jpg' urlretrieve(image_url,?'学习,学个屁.jpg') 

查看更多关于【爬虫实战】获取最新一期青年大学习的结束图的详细内容...

  阅读:41次