皆さんこんにちは。編集者は次の質問に答えます。Python はクロールされたデータをどのフォルダーに保存しますか? Python はクロールされたデータをどのファイルに保存しますか? それでは見てみましょう!
クローラー リクエストによって解析されたデータは、さらなる処理を実行する前に保存する必要があります。一般に、データを保存する方法は次のとおりです。
-
ファイル: txt、csv、excel、json など、少量のデータが保存されます。
-
リレーショナル データベース: mysql、oracle など、大量のデータを保存したい場合、Python に何をインストールする必要がありますか?
-
非リレーショナル データベース: Mongodb、Redis などは、データをキーと値のペアの形式で保存し、大量のデータを保存します。
-
バイナリ ファイル: クロールされた画像、ビデオ、オーディオ、その他の形式のデータを保存します。
まず、Douban Reading から「The Ordinary World」の 3 ページの短いレビュー情報をクロールし、ファイルに保存します。
https://book.douban.com/subject/1200840/comments/
具体的なコードは次のとおりです (例外は無視します)。
import requests
from bs4 import BeautifulSoup
urls=['https://book.douban.com/subject/1200840/comments/?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0, 60, 20)] #通过观察的url翻页的规律,使用for循环得到3个链接,保存到urls列表中
print(urls)
dic_h = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
comments_list = [] #初始化用于保存短评的列表
for url in urls: #使用for循环分别获取每个页面的数据,保存到comments_list列表
r = requests.get(url=url,headers = dic_h).text
soup = BeautifulSoup(r, 'lxml')
ul = soup.find('div',id="comments")
lis= ul.find_all('p')
list2 =[]
for li in lis:
list2.append(li.find('span').string)
# print(list2)
comments_list.extend(list2)
print(comments_list)
コメント データに移動し、リストに保存します。
ファイルに書き込むには open() メソッドを使用します
データをtxtに保存する
上記のクロールされたリスト データを txt ファイルに保存します。
with open('comments.txt', 'w', encoding='utf-8') as f: #使用with open()新建对象f
# 将列表中的数据循环写入到文本文件中
for i in comments_list:
f.write(i+"\n") #写入数据
データをCSVに保存する
CSV (Comma-Separated Values、カンマ区切り値、または文字区切り値) は、純粋なファイル形式でデータを記録するストレージ形式です。csv ファイルを保存するには、Python の組み込みモジュール csv を使用する必要があります。
リストまたはタプル データを書き込む: ライター オブジェクトを作成し、writerow() を使用して 1 行のデータを書き込み、writerows() メソッドを使用して複数行のデータを書き込みます。
Writer オブジェクトを使用してリスト データを書き込みます。サンプル コードは次のとおりです。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import csv
headers = ['No','name','age']
values = [
['01','zhangsan',18],
['02','lisi',19],
['03','wangwu',20]
]
with open('test1.csv','w',newline='') as fp:
# 获取对象
writer = csv.writer(fp)
# 写入数据
writer.writerow(headers) #写入表头
writer.writerows(values) # 写入数据
辞書データの書き込み: DictWriter オブジェクトを作成し、writerow() を使用して 1 行のデータを書き込み、writerows() メソッドを使用して複数行のデータを書き込みます。
DictWriter オブジェクトを使用して辞書データを書き込みます。サンプル コードは次のとおりです。
import csv
headers = ['No','name','age']
values = [
{"No":'01',"name":'zhangsan',"age":18},
{"No":'02',"name":'lisi',"age":19},
{"No":'03',"name":'wangwu',"age":20}]
with open('test.csv','w',newline='') as fp:
dic_writer = csv.DictWriter(fp,headers)
dic_writer.writeheader()# 写入表头
dic_writer.writerows(values) #写入数据
上記でクロールしたデータを csv ファイルに保存します。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import requests
import csv
from bs4 import BeautifulSoup
urls=['https://book.douban.com/subject/1200840/comments/?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0, 60, 20)] #通过观察的url翻页的规律,使用for循环得到5个链接,保存到urls列表中
print(urls)
dic_h = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
comments_list = [] #初始化用于保存短评的列表
for url in urls: #使用for循环分别获取每个页面的数据,保存到comments_list列表
r = requests.get(url=url,headers = dic_h).text
soup = BeautifulSoup(r, 'lxml')
ul = soup.find('div',id="comments")
lis= ul.find_all('p')
list2 =[]
for li in lis:
list2.append(li.find('span').string)
# print(list2)
comments_list.extend(list2)
new_list = [[x] for x in comments_list] #列表生成器,将列表项转为子列表
with open("com11.csv", mode="w", newline="", encoding="utf-8") as f:
csv_file = csv.writer(f) # 创建CSV文件写入对象
for i in new_list:
csv_file.writerow(i)
パンダを使用してデータを保存する
Pandas は複数のファイル形式の読み書きに対応しており、CSV や Excel のデータ操作が最もよく利用されており、直接読み込むデータはデータフレーム形式であるため、クローラやデータ分析で広く利用されています。
一般に、クロールされたデータは DataFrame オブジェクトとして保存されます (DataFrame は、各行がインスタンスを表し、各列が変数を表す 2 次元配列に似たテーブルまたは構造です)。
パンダはデータをExcel、CSVに保存します
Excel と CSV をパンダに保存するのは非常に簡単で、わずか 2 行のコードで実行できます。
df = pd.DataFrame(comments_list) #把comments_list列表转换为pandas DataFrame
df.to_excel('comments.xlsx') #保存到excel表格
# df.to_csv('comments.csv')#保存在csv文件
最後に、非常に優れた学習チュートリアルを皆さんにお勧めします。Python の学習に役立つことを願っています。
推奨される Python の基本的な入門チュートリアル: その他の Python ビデオ チュートリアル - ステーション B: Python 学習者に従う
【Pythonチュートリアル】インターネット上で一番わかりやすいPythonのシステム学習チュートリアル1,000話(最新4号にQ&Aがあり、役立つ情報が満載)
推奨される Python クローラー ケース チュートリアル: その他の Python ビデオ チュートリアル - ステーション B をフォロー: Python 学習者
2021 Python の最新かつ最も完全な 100 クローラーの完全なケース チュートリアル、データ分析、データ視覚化。忘れずにブックマークしてください。