时间:2023-02-13 14:06:01 | 来源:建站知识
时间:2023-02-13 14:06:01 来源:建站知识
web爬虫本质上就是一种递归,首先获取一个url对应的页面内容,检测这个页面寻找另一个url,再获取该url对应的网页内容,并不断循环这一过程。这也就是代码在运行的时候是那么慢的原因了...import reimport sslimport urllib.requestfrom bs4 import BeautifulSoup
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")
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
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
关键词:电影,获取,名称,爬虫,网络