18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 建站知识 > python:网络爬虫之遍历单个域名获取电影名称及年份

python:网络爬虫之遍历单个域名获取电影名称及年份

时间:2023-02-13 14:06:01 | 来源:建站知识

时间:2023-02-13 14:06:01 来源:建站知识

web爬虫本质上就是一种递归,首先获取一个url对应的页面内容,检测这个页面寻找另一个url,再获取该url对应的网页内容,并不断循环这一过程。这也就是代码在运行的时候是那么慢的原因了...







抱歉,强行塞了一个开头....

前置:需要引入的包

import reimport sslimport urllib.requestfrom bs4 import BeautifulSoup


示例1:访问url并解析后返回

def visit_page(url): """ 解析主url的函数,并返回BeautifulSoup解析后的html :param url: :return: """ headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36" } ssl._create_default_https_context = ssl._create_unverified_context url_obj = urllib.request.Request(url, headers=headers) response = urllib.request.urlopen(url_obj) html = response.read().decode('utf8') return BeautifulSoup(html, "html.parser")


示例2:获取页面中的单个域,处理后存入集合去重

def get_url_links(): """ 利用正在获取内链,获取标签为href的,然后塞到集合中去重并返回集合 :return: """ links_url = set() bs = visit_page("https://movie.douban.com/chart") data = bs.find_all('a', href=re.compile('(https:////movie/.douban/.com//subject).*')) count = 0 for i in data: if 'href' in i.attrs: links_url.add(i.attrs['href']) count += 1 print(count) return links_url


示例3:遍历存入的域名,获取文本信息

def visit_movie(): """ 循环集合数据,并通过正则找到标签为h1的数据,获取文本信息 文本通过strip去两边的换行符并添加到列表中,返回列表 :return: """ save_data = [] for i in get_url_links(): bs = visit_page(i) title = bs.find('h1').get_text() save_data.append((title.strip('/n'),)) return save_data


调用函数运行,循环列表数据并进行分割处理:

if __name__ == '__main__': """ 循环列表,通过换行符,分割电影名称和年份 获取到电影名称和年份,end不换行显示,print()换行第二行数据 """ for i in visit_movie(): for j in i: name, year = j.split('/n') print(f'电影名称: {name} ;年份: {year}', end=' ') print()


运行后的结果显示如下:

电影名称: 第十一回 ;年份: (2019) 电影名称: 上帝之城 Cidade de Deus ;年份: (2002) 电影名称: 托芙 Tove ;年份: (2020) 电影名称: 三傻大闹宝莱坞 3 Idiots ;年份: (2009) 电影名称: 我不是药神 ;年份: (2018) 电影名称: 未麻的部屋 Perfect Blue ;年份: (1997) 电影名称: 电锯惊魂9:漩涡 Spiral: From the Book of Saw ;年份: (2021) 电影名称: 罪之声 罪の声 ;年份: (2020) 电影名称: 那些希望我死的人 Those Who Wish Me Dead ;年份: (2021) 电影名称: 人之怒 Wrath of Man ;年份: (2021) 电影名称: 寻龙传说 Raya and The Last Dragon ;年份: (2021) 电影名称: 花样年华 花樣年華 ;年份: (2000) 电影名称: 找到你 Finding You ;年份: (2021) 电影名称: 地球改变之年 The Year Earth Changed ;年份: (2021) 电影名称: 蝙蝠侠:黑暗骑士崛起 The Dark Knight Rises ;年份: (2012) 电影名称: 穿越时空的少女 時をかける少女 ;年份: (2006) 电影名称: 小人物 Nobody ;年份: (2021) 电影名称: 渐强 Crescendo ;年份: (2019) 电影名称: 釜山行 부산행 ;年份: (2016) 电影名称: 迷宫中的人 L'uomo del labirinto ;年份: (2019) 电影名称: 遗愿清单 The Bucket List ;年份: (2007) 电影名称: 智能大反攻 The Mitchells vs. The Machines ;年份: (2021) 电影名称: 八月处子 La Virgen de Agosto ;年份: (2019) 电影名称: 真人快打 Mortal Kombat ;年份: (2021) 电影名称: 窗里的女人 The Woman in the Window ;年份: (2021) 电影名称: 兹山鱼谱 자산어보 ;年份: (2021) 电影名称: 黑道与家族 ヤクザと家族 ;年份: (2021) 电影名称: 网诱惊魂 Profile ;年份: (2018) 电影名称: 夏季幸存者 Išgyventi vasarą ;年份: (2018) 电影名称: 三块广告牌 Three Billboards Outside Ebbing, Missouri ;年份: (2017) 电影名称: 酒精计划 Druk ;年份: (2020) 电影名称: 教父2 The Godfather: Part Ⅱ ;年份: (1974) 电影名称: 今天在这里 Here Today ;年份: (2021) 电影名称: 人潮汹涌 ;年份: (2021) 电影名称: 鬼灭之刃 Demon Slayer ;年份: (2003) 电影名称: 哥斯拉大战金刚 Godzilla vs Kong ;年份: (2021) 电影名称: 鬼灭之刃 剧场版 无限列车篇 劇場版 鬼滅の刃 無限列車編 ;年份: (2020) 电影名称: 唐人街探案3 ;年份: (2021) 电影名称: 初恋这件小事 สิ่งเล็กเล็กที่เรียกว่า...รัก ;年份: (2010) Process finished with exit code 0


以上代码还有待优化,比如异常捕获,及异常捕获后的处理是什么样等等....




以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!

未完,待续…

一直都在努力,希望您也是

微信搜索公众号:就用python



关键词:电影,获取,名称,爬虫,网络

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭