基于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')
            # 通过字符串支持的查找操作对目标进行查找。目标字符串如下图所示。
            """
             [<a class="active" href="http://www.cbooo.cn/m/642412" title="流浪地球">
             <img alt="流浪地球" onerror="this.src='../../Content/images/nopic.jpg'" 
             src="http://images.entgroup.cn/group1/M00/00/AB/wKgASVzny4uAEWvcAABfH3c7ZxA728.jpg"/>
             <p><span>1.</span>流浪地球</p></a>]
            """
            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+'
')
            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)    
原文地址:https://www.cnblogs.com/pprp/p/11005933.html