爬虫实践---电影排行榜和图片批量下载

 2023-09-10 阅读 30 评论 0

摘要:1.目标网址:http://dianying.2345.com/top/ 需要找到的信息:电影的名字,主演,简介,和标题图片 2.查看页面结构: 容易看到,需要的主题部分,都被包裹在‘<ul>“列表标签里, 那么简单的用bs4库找到"&

1.目标网址:http://dianying.2345.com/top/

需要找到的信息:电影的名字,主演,简介,和标题图片

2.查看页面结构:

容易看到,需要的主题部分,都被包裹在‘<ul>“列表标签里,

那么简单的用bs4库找到 "<ul>" tag并迭代取出每一条“<li>”tag,

最后再从每个<li>标签里找到需要的信息即可。

3.图片下载:

在电影排行榜爬虫当中,有一项目标是:爬取每个电影的标题图,

那么如何以文本的形式爬下来呢?

在计算机的世界里,一切的数据归根到底都是以“0”和“1”的二进制形式存在的。

图片自然也不例外,任何一张图片,都是以“字节流 ”的形式,

通过了一定的编码方式,被计算机排列组合,从而显示成我们肉眼所看到的图片。

那么只要把图片数据从网上下载下来,然后再以二进制的格式写入到本地即可。

给出一个图片下载的通用代码片段:

 import requestsdef get_pic_from_url(url):#从url以二进制的格式下载图片数据pic_content = requests.get(url,stream=True).contentopen('filename','wb').write(pic_content)

4.完整代码

import requests
from bs4 import BeautifulSoupdef get_html(url):try:r = requests.get(url,timeout = 30)r.raise_for_statusr.encoding = 'gb2312'return r.textexcept:return 'error'def get_content(url):html = get_html(url)soup = BeautifulSoup(html,'lxml')# 找到电影排行榜的ul列表movie_list = soup.find('ul',class_='picList clearfix')movies = movie_list.find_all('li')for movie in movies:# 找到图片链接,电影名称img_url = movie.find('img')['src']name = movie.find('span',class_='sTit').text#这里做一个异常捕获,防止没有上映时间try:time = movie.find('span',class_='sIntro').textexcept:time = '暂无上映时间'# 迭代找出“pACtor”的所有子孙节点,解决每一位演员的名字分割问题try:actors = movie.find('p',class_='pActor').contentsactor = ''for act in actors:actor = actor + act.string + ' 'except:actor = '暂无主演'# 找到影片简介intro = movie.find('p',class_='pTxt pIntroShow').textprint("片名:{}\t{}\n{}\n{} \n \n".format(name,time,actor,intro))# 把图片下载下来,以二进制读写模式打开with open('C:/Users/Administrator/Desktop/img/'+name+'.png','wb+') as f:f.write(requests.get(img_url).content)def main():url = 'http://dianying.2345.com/top/'get_content(url)if __name__ == '__main__':main()

5.输出结果

 

6.注意点

requests的content和text属性的区别:

从print 结果来看是没有任何区别的

resp.text返回的是Unicode型的数据。

resp.content返回的是bytes型也就是二进制的数据。

也就是说,如果想获取文本,可以通过r.text。

如果想取图片,文件,则可以通过r.content。

 

转载于:https://www.cnblogs.com/Lovebugs/p/7243629.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/37207.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息