私は、.aspx Webページから情報をクロールするためのスクラップコードを作成しています。私はデータベース内のすべてのレコードを取得したいが、私はレコードのインデックスのリストを持っていない。私はインデックスが1から9000000までの整数であることだけを知っています。したがって、私はforループでインデックスにブルートフォースを使用することを考えています。複数の引数でforループを多重処理する方法
各レコードから特定の情報を取得したいと考えています。そこで、私はbeautifulsoupとpandas.DataFrameを使用して、必要な情報を保存しました。次に、データフレームを追加してレコードを収集します。例えば
:
df_all = pandas.DataFrame(col= ['A', 'B', 'C'])
# id: Unique id of each record; df_all: the dataframe that stores the records
def func(id, df_all):
"""
Use beautifulsoup to collect the info from the webpage
"""
df_temp = pd.DataFrame([1,2,3], col= ['A', 'B', 'C'])
df_all = df_all.append(df_temp, ignore_index= True)
return df_all
私はループが同時にFUNC機能を実行するためのいくつかの使用を考えています。たとえば、1番目のクライアントは1〜22500000です。 2番目のクライアントは22500001〜4500000を実行します。等々。次に、各クライアントの結果を組み合わせることができます。私はipyparallel、multiprocessing.pool、およびjoblibを使用しようとしました。しかし、私の関数の構造は並列処理には適切ではないようです。並列forループタスクを実行するために構造を変更するにはどうすればよいですか?または、データベースからデータを取得するより良い方法はありますか?データベースには29k +レコードしかありません。 1から90000000までのインデックスにブルートフォースを使用することは、実際にこれにアプローチする最善の方法ではありません。
詳細をご覧ください。あなたはそのサイトを所有していますか、それとも他の人ですか?それが他人のものなら、どのようにデータベースに接続していますか?なぜインデックスが必要ですか?どこでBeautifulSoupを呼び出していますか?どのオブジェクトが返されますか?レコードはどのように見えますか? Pandasのデータフレームにレコードを格納する目標はありますか? – ddg
レコードの情報を呼び出す最も簡単な方法は、対応するIDを使用することです。各レコードは独自のWebページを持っているので、私は関数内で美しいスープを呼び出しました。リンクはhttps://propaccess.trueautomation.com/clientdb/Property.aspx?prop_id=12345のようなものです。しかし、私はリンクからクッキーを取得する必要があります:https://propaccess.trueautomation.com/clientdb/?cid=39。次に、ID番号を – whh1294