仕事 - - 猫の兄は036--爬虫類爬虫類-BeautifulSoupの練習の書き込みにあなたを教える映画を解決するための作業をtop250-

値のインデックスとリスト内の移動

list1 = ['我','爱','中国']
for i,k in enumerate(list1):
    print(i)
    print(k)
复制代码

コードのオブジェクト指向スタイルは、コメントを書かれています

import requests
import time
from bs4 import BeautifulSoup
class Spider():
    def __init__(self, base_url):
        '''
        根据入口url来实例化movie对象
        '''
        self.movie = Movie(base_url)
    def start(self):
        '''
        1. 获取每个分页的url
        2. 遍历, 把每个分页url作为入口
        3. 进入页面, 爬取数据
        4. 保存到movies_250_list
        5. 处理movies_250_list, 生成markdown
        '''
        for movie_url in self.get_page_urls():
            self.make_movie_list(movie_url)
        self.movie.make_markdown()
    def make_movie_list(self, url):
        '''
        从页面获取电影的相关信息, 保存到movie_250_list
        '''
        res = requests.get(url)
        print(url)  # 打印url, 显示进度
        time.sleep(2)  # 暂停2秒, 防止频率过高, 被封IP
        movie_html_tag_obj = BeautifulSoup(res.text, 'html.parser')
        for i in movie_html_tag_obj.find('ol', class_='grid_view').find_all('div', class_='item'):
            tmp_dict = {}  # 设置对象, 用来保存电影的名称, 封面, 评论, 和评分(电影的排名可以参考list的索引)
            tmp_dict['movie_title'] = i.find(
                'div', class_='pic').find('img')['alt']
            tmp_dict['movie_img'] = i.find(
                'div', class_='pic').find('img')['src']
            tmp_dict['movie_desc'] = i.find('span', class_='inq').text
            tmp_dict['movie_score'] = i.find('span', class_='rating_num').text
            self.movie.movies_250_list.append(tmp_dict)
    def get_page_urls(self):
        '''
        获取分页的url
        因为豆瓣250电影太多, 所以进行了分页, 我们需要进入每个分页里面, 进行爬取
        '''
        movie_url_list = [self.movie.base_url]  # 声明变量的时候, 先把第一个网址写进去
        res = requests.get(self.movie.base_url)
        movie_index_tag_obj = BeautifulSoup(res.text, 'html.parser')
        a_tag_list = movie_index_tag_obj.find('div', class_='paginator').find_all('a')  # 从a标签的href获取url
        for i in a_tag_list[:9]:
            movie_url_list.append(self.movie.base_url+i['href'])
        return movie_url_list
class Movie():
    base_url = ''  # 入口url
    movies_250_list = []  # 电影250列表
    def __init__(self, base_url):
        '''
        初始化对象时, 存储url, 方便以后调用
        '''
        self.base_url = base_url
    def make_markdown(self):
        '''
        创建markdown, 把之前存储的信息, 写入markdown
        '''
        with open('douban250.md', 'w', encoding='utf8') as file:
            for index, movie_dict in enumerate(self.movies_250_list):
                file.write('![]({})\n'.format(movie_dict['movie_img']))
                file.write('## {}\n'.format(movie_dict['movie_title']))
                file.write(
                    '### {} [top{}-{}]\n'.format(movie_dict['movie_desc'], index+1, movie_dict['movie_score']))
                file.write('---\n\n')
if __name__ == "__main__":
    spider = Spider('https://movie.douban.com/top250')  # 初始化爬虫, 传入入口url
    spider.start()  # 开始爬取
复制代码

クイックジャンプ:

猫の兄弟は爬虫類000--を書くためにあなたを教えた.md始まる
猫の兄弟爬虫類001を書くためにあなたを教える-印刷()関数と変数た.md
猫の兄弟は爬虫類002--仕事を書くためにあなたを教える-ピカチュウた.md印刷
猫の兄弟は爬虫類を書くためにあなたを教えます003データ型変換た.md
猫の兄弟爬虫類004--データ型変換を書くためにあなたを教える-小さな実践がた.md
猫の兄弟を爬虫類005--データ型変換を書くためにあなたを教える-小さな仕事はた.md
猫の兄弟が爬虫類を書くためにあなたを教えます006- -条件付きとネストされた条件は、た.md
小さなオペレーティングた.md - 007爬虫類の条件とネストされた条件を書くためにあなたを教える猫の兄弟を
猫の兄弟をあなたは爬虫類008を書くことを教える-入力()関数は、た.md
猫の兄弟が爬虫類を書くためにあなたを教えます009 -入力()関数- AI小さな愛の学生がた.md
猫の兄弟を、010爬虫類、辞書のリストを書くために循環た.mdあなたを教える
猫の兄弟を爬虫類011--リスト、辞書、循環書くためにあなたを教える-小さな仕事をた.md
猫の兄は、あなたがブール値を書くことを教える、と4つの爬虫類012--のステートメントはた.md
あなたがブール値の書き込みに教える猫の兄弟を、そして4匹の爬虫類013--文-小さなジョブた.md
PKゲーム-猫の兄は、あなたが爬虫類014書くことを教えます。 MDの
PKゲーム(新しいリビジョン)た.md -猫の兄は、あなたが爬虫類015の書き込みに教える
あなたがた.md爬虫類016--機能書くことを教える猫の兄弟
猫の兄弟があなたが爬虫類017--関数を書くことを教えるを-小さなジョブがた.md
あなたを教えるために猫の兄弟を爬虫類018--debug.md書き込み
デバッグ-仕事-猫の兄弟を爬虫類019を書くためにあなたを教えます。mdの
猫の兄弟爬虫類020--クラスとオブジェクト(上)を書くためにあなたを教えた.md
猫の兄弟が爬虫類に021--クラスとオブジェクト(a)の書き込みにあなたを教える-ジョブた.mdを
猫の兄弟があなたが爬虫類に022--クラスとオブジェクトを書くことを教える(下)た.md
求人た.md -猫の兄は、あなたが爬虫類に023--クラスとオブジェクトを(下)書くことを教える
猫の兄弟があなたが爬虫類の書き込みに024--コード化された復号を教え&&た.md
猫の兄弟がコード化されたデコード爬虫類025 &&を書くためにあなたを教える-小さな仕事はた.md
猫の兄弟をあなたに教える爬虫類026--モジュールを書くためた.md
猫の兄弟爬虫類を書くためにあなたを教える027--モジュールがた.md紹介
猫の兄弟が爬虫類を書くためにあなたを教えます028- -導入モジュール-小さな仕事-看板た.md
猫の兄は、あなたが予備-requests.md爬虫類爬虫類029--書くことを教える
あなたは030--予備-requests-ジョブがた.md爬虫類爬虫類書くことを教える猫の兄弟を
猫の兄弟が031爬虫類を書くためにあなたを教えます-爬虫類の基礎-html.md
猫の兄は、あなたが爬虫類爬虫類032--最初の経験を書くことを教える-BeautifulSoup.md
猫の兄弟があなたが033--初めての経験-BeautifulSoup-ジョブがた.md爬虫類爬虫類の書き込みに教える
あなたは爬虫類を書くことを教える猫の兄弟を034- -た.md練習-BeautifulSoup爬虫類
の仕事- - top250.mdフィルム猫の兄は、あなたは035--爬虫類爬虫類-BeautifulSoup練習書くことを教える
猫の兄弟があなたが036--爬虫類爬虫類-BeautifulSoupの練習を書くために教えを-仕事-仕事をた.md映画top250-を解決するために
猫の兄弟は037--爬虫類爬虫類を書くためにあなたを教える-ベビーた.md曲を聴くために
猫の兄弟があなたに教える爬虫類を書くこと038--引数がた.md要求
猫の兄弟を保存されたデータを書き込むためにあなたを教える爬虫類039--た.md
猫の兄弟爬虫類を書くためにあなたを教えます040--ストアデータ -ジョブた.md
猫の兄弟があなたが爬虫類を書くことを教える041--アナログログイン-cookie.md
猫の兄弟は爬虫類042を書くためにあなたを教える-セッション使用はた.md
猫の兄弟を爬虫類を書くためにあなたを教える043--アナログブラウザがた.md
猫の兄弟を爬虫類044--アナログブラウザを書くためにあなたを教える-ジョブがた.md
猫の兄弟が爬虫類を書くためにあなたを教えます045--コルーチンた.md
練習- -猫の兄は爬虫類046--コルーチン書くためにあなたを教えて太っていないた.md食べるためにどのような
猫の兄弟を爬虫類047を書くためにあなたを教える-た.md scrapyフレームワーク
猫の兄弟が爬虫類を書くためにあなたを教えます048--た.md爬虫類爬虫類および抗
猫の兄弟は爬虫類を書くためにあなたを教える049--エンドSahuaた.md

ます。https://juejin.im/post/5cfc4adce51d45508c2fb81bで再現

おすすめ

転載: blog.csdn.net/weixin_34253126/article/details/91416928