あなたは私の直面している問題について新しい質問をしていますが、皆さんは私の最後の質問ですごく助けになりました。私はBeautifulSoupをインポートし、このサイトの医科大学のデータベースからデータをエクスポートしようとしています:https://services.aamc.org/msar/home。私はウェブサイトを開いて解析するための "for"ループを作成し、都市と州の学校を含む特定のスパンからデータを印刷します。コードを実行した後、私は自分のコードが動作していたことを知ってうれしく思いました!!そして、それは3番目の学校の後にエラーを返すことを驚かせました。問題の可能性のために周りのスヌーピング時に、私が代わりにhttps://services.aamc.org/msar/schoolDetails /(コード)の私は使用からURLをデータを引っ張った学校のいくつかの「https://services.aamc.org/msar/プログラム詳細/(コード)/約」、/について(ことを見ました私はコード内のURLとして設定していました)、したがって、私のプログラムは、存在しないWebページからスパンデータを取得しようとしています!UrllibとBeautifulSoupフレキシブルなurlopen()オプション
"このURLまたはそのURLを特定する"という私の "url ="にURLを定義する方法を知っている人はいませんか、またはURLのその部分をスキップしてコードを単純に一致させる/ URLの一部については?最も重要なことは、このコードをデータベースに表示されている順序と同じ順序で返すことです。このデータをすべてCSV形式の列にインポートして並べ替えることになります。だから、それは無作為な順序であることはできません。
ありがとう、本当に助けていただきありがとうございます。各学校の正しいURLについて、その情報を仮定し
マット(下記のコードの申し訳ありません一部がコードウィンドウに表示されません!)
import requests
from urllib2 import urlopen
from bs4 import BeautifulSoup
url = "https://services.aamc.org/msar/home#null"
search_url = "https://services.aamc.org/msar/search/resultData"
with requests.Session() as session:
session.get(url) # visit main page
# search
data = {
"start": "0",
"limit": "500",
"sort": "",
"dir": "",
"newSearch": "true",
"msarYear": ""
}
response = session.post(search_url, data=data)
import csv
# extract search results
results = response.json()["searchResults"]["rows"]
codes = []
for result in results:
codes.append(int(result["key"]))
for code in codes:
url = "https://services.aamc.org/msar/schoolDetails/%d/about" % code
soup = BeautifulSoup(urlopen(url))
city = soup.find("span", {"style": "font-size: 16px; font-weight: bold;"})
for span in city:
print(span)
'[" searchResults "] [" rows "]'には正しいURLに関する情報が含まれていますか? – har07
はい、 "search_url"を見ると、メインページ "https://services.aamc.org/msar/home"のすべての情報のコードが表示されます。私は各学校(https://services.aamc.org/msar/schoolDetails/%d/about "%code)のページに行き、都市を掻き集めようとしています。問題は、個々の学校のサイトが"https://services.aamc.org/msar/schoolDetails/%d/about"%code "、時には" https://services.aamc.org/msar/programDetails/%d/about "%code "私はBeautifulSoupのコマンドを知っていないので、" schoolDetails "または" programDetails "のいずれかのURLに文字列を入れることができます。 –
" if/else文が機能するかもしれない "と思っています。 –