基于beautifulSoup进行电影网站排名的获取与格式化输出

要求

编写代码完成以下任务:

① 将地址"http://www.cbooo.cn/year?year=2019"源代码使用任意方法保存到指定文件中(文件类型不限)。

② 使用文件流读取该页面内容到程序中

③ 使用Python以任意方法提取出页面中的电影排名与电影名,并以如下形式打印输出

输出格式为:第*名-《***》

代码

import urllib.request
from bs4 import BeautifulSoup
import os

# 1、获取详细的页面数据
def get_html_link(link,outHtml):
    #如果超链接非空
    if link is not None:
        #请求超链接页面HTML
        link_list=urllib.request.urlopen(link).read()
        # 将内容写到文件中去
        with open(outHtml,"w") as f:
            f.write(link_list.decode('utf-8'))
        # 从文件中读取内容
        fullPath = "file:///"+os.getcwd()+"/"+outHtml
        link_list2 = urllib.request.urlopen(fullPath).read()
        # 格式化HTML
        soup=BeautifulSoup(link_list2,'lxml')
        # 获取class='one'的标签
        content=soup.find_all('td',class_='one')
        for tag in content:
            tdlist = tag.find_all('a')
            # 通过字符串支持的查找操作对目标进行查找。目标字符串如下图所示。
            """
             [
             流浪地球
             

1.流浪地球

] """ pos = str(tdlist).find('title') posEnd = str(tdlist).find('"',pos+8) tmp = str(tdlist)[pos+7:posEnd] yield tmp else: print("网页链接有问题,请重试") # 2、数据保存 def save_suject(title_content): # 将输出输出到文件中 with open('output.txt','w+',encoding='utf-8') as f: cnt = 1 for tile in title_content: f.write(tile+'\n') print("第%d名-《%s》" % (cnt,tile)) cnt += 1 # 3、函数回调 def fun_call(url,out): title_content=get_html_link(url,out) save_suject(title_content) if __name__=='__main__': url='http://www.cbooo.cn/year?year=2019' outHtml = "out.html" fun_call(url,outHtml)

你可能感兴趣的:(基于beautifulSoup进行电影网站排名的获取与格式化输出)