PythonはTop 250の情報を収集し、孤独と退屈を恐れなくなりました...

みなさんこんにちはレッサーパンダです❤

最近ちょっとしたドラマが…

トップ10の映画はもはや十分ではありません

今回の総合ランキングTOP250一度見てみましょう

画像の説明を追加してください

今回のハイライト:

  • ウェブページの構造を分析する
  • css/xpath/再解析データ
  • CSVファイルを保存

使用環境の紹介:

  • パイソン3.8
  • パイチャーム

画像の説明を追加してください

このモジュールは以下を使用します。

  • リクエスト >>> データ リクエスト モジュール pip インストール リクエスト
  • parsel >>> データ解析モジュール pip install parsel
  • csv

モジュールのインストールの問題:

Python サードパーティ モジュールをインストールする場合:

  1. win + R Enter cmd [OK] をクリックし、インストール コマンドを入力します pip install module name (pip install requests) Enter
  2. pycharm で [ターミナル] をクリックし、インストール コマンドを入力します。

インストール失敗の理由:

失敗 1: pip は内部コマンドではありません
解決策: 環境変数を設定します

失敗 2: 赤いレポートがたくさんある (読み取りタイムアウト)
解決策:

ネットワーク接続がタイムアウトしたため、ミラー元を切り替える必要があります

清華: https://pypi.tuna.tsinghua.edu.cn/simple Alibaba
Cloud: http://mirrors.aliyun.com/pypi/simple/ 中国科学技術大学
https://pypi.mirrors.ustc .edu.cn /simple/
華中科技大学: http://pypi.hustunique.com/ 山東理工大学: http://pypi.sdutlinux.org/
Douban: http://pypi.douban.com /simple/ 例: pip3 install - i
https://pypi.doubanio.com/simple/ モジュール名

失敗 3: cmd は、それがインストールされていることを示しているか、インストールは成功していますが、まだ pycharm にインポートできませ

1つをアンインストールするか、pycharmのpythonインタープリターがセットアップされていません

画像の説明を追加してください

pycharm で python インタープリターを設定するには?

  1. ファイルを選択 >>> 設定 >>> プロジェクト >>> python interpreter (パイソン インタープリター)
  2. 歯車をクリックし、追加を選択し
    て Python インストール パスを追加します。
  3. pycharm はどのようにプラグインをインストールしますか?
    ファイルを選択 >>> 設定 >>> プラグイン (プラグイン) を選択し、
    Marketplace をクリックして、インストールするプラグインの名前を入力します (例: プラグインを翻訳し、 translation と入力
    し、対応するプラグインを選択し、 をクリックします)。インストール。
  4. インストールが成功すると、pycharm を再起動するオプションがポップアップ表示されます。[OK] をクリックし、再起動して有効にします。

クローラー コードには、基本的に次の 4 つの手順があります。

  1. リクエストを送信してリクエスト URL アドレスを特定
    する ブラウザを Python コードでシミュレートして、リクエストを URL アドレスに送信する

  2. データを
    取得する サーバーから返された応答データを取得します

  3. 分析データ

  4. セーブデータ

画像の説明を追加してください


コード

import requests  # 数据请求模块
import parsel  # 数据解析模块
import csv  # 保存csv文件

f = open('top250最终版本03.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '电影名',
    # '导演',
    # '主演',
    '演员信息',
    '年份',
    '国家',
    '电影类型',
    '评分',
    '评论量',
    '简介',
    '详情页',
])
csv_writer.writeheader()
# 1. 发送请求
for page in range(0, 250, 25):
    url = f'https:///top250?start={
      
      page}&filter='
    # 请求头 字典数据类型, 构建完整键值对  对于一些基本没有什么反爬的网站, 不加请求头也可以
    headers = {
    
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
    }
    # 发送请求代码
    response = requests.get(url=url, headers=headers)  # <Response [200]>  200 状态码表示请求成功
    # 2. 获取响应对象的文本数据
    # print(response.text)  # 字符串数据类型
    # 3. 解析数据 提取我们想要数据内容 如果你想要直接对于字符串数据进行解析(提取) 只能用re正则
    selector = parsel.Selector(response.text)  # 把获取下来html字符串数据, 转成selector可解析的对象
    # print(selector)   <Selector xpath=None data='<html lang="zh-CN" class="ua-windows ...'>
    # css选择器: 就是根据标签属性内容,提取相关数据
    lis = selector.css('.grid_view li')  # 第一次提取, 获取所有li标签 返回列表
    for li in lis:  # 一个一个提取列表里面元素, 通过for循环遍历
        try:
            # span:nth-child(1) 选择第一个span标签
            # span:nth-child(1)::text 获取第一个span标签里面文本数据
            # span::text 也可以得到数据 get() 获取第一个标签里面 getall() 获取所有内容
            title = li.css('.hd a span::text').get()  # 电影名字
            info_list = li.css('.bd p:nth-child(1)::text').getall()
            # strip() 去除字符串左右两端空格  split 对于字符串数据分割返回列表 replace 替换
            # actor_list = info_list[0].strip().split('   ')
            # director = actor_list[0].replace('导演: ', '')  # 导演
            # actor = actor_list[1].replace('主演: ', '').replace('/...', '')  # 主演
            actor_list = info_list[0].strip().replace('导演: ', '').replace('主演: ', '')  # 演员信息
            info = info_list[1].strip().split(' / ')
            date = info[0]  # 年份
            country = info[1]  # 国家
            movie_types = info[2]  # 电影类型
            score = li.css('.rating_num::text').get()  # 评分
            comment = li.css('.star span:nth-child(4)::text').get().replace('人评价', '')  # 评论量
            summary = li.css('.inq::text').get() # 简介
            href = li.css('.hd a::attr(href)').get()  # 详情页
            dit = {
    
    
                '电影名': title,
                # '导演': director,
                # '主演': actor,
                '演员信息': actor_list,
                '年份': date,
                '国家': country,
                '电影类型': movie_types,
                '评分': score,
                '评论量': comment,
                '简介': summary,
                '详情页': href,
            }
            csv_writer.writerow(dit)
            print(title, actor_list, date, country, movie_types, score, comment, summary, href, sep=' | ')
        except Exception as e:
            print(e)

今日の記事はここまで〜

レッサーパンダです、また次の記事でお会いしましょう(✿◡‿◡)

源码资料素材下方名片获取

画像の説明を追加してください

おすすめ

転載: blog.csdn.net/m0_67575344/article/details/127091904