私はテキストのオンラインコーパスからスクレイプしようとしています。これらのテキストは、サイト上でツリー状に配置されています。OneはBページを開くAをクリックし、BはCをクリックしてテキストを開きます。 Aでは約50のリンクがあり、Bでは3から150の間で変化しますが、時にはCにもリンクがありますが、私はそれらに興味がありません。
私はこれを達成するために何をしましたか:私はAを開き、BeautifulSoupでそれを解析し、私が望むリンクを集めて.txtファイルとして保存しました。それから、私は次のことをしました:Pythonが無効なスキーマエラーを要求しました
私が望むすべてのリンクをリスト形式で与えました。 はその後、私はリストYeni_A_url_list
の要素からBのページ内のリンクを取得できるかどうかをテストするために小さなスクリプトを書きました、ここに私のスクリプトです:
data2=requests.get(Yeni_A_url_list[1].strip())
data2.raise_for_status()
data2_Metin=data2.text
soup_data2=BeautifulSoup(data2_Metin, "lxml")
for link in soup_data2.find_all("a"):
print(link.get("href"))
ストリップは、おそらくそこに機能はありませんが、私はそれを考えました傷つけません。このスクリプトは、要素に対してはうまく機能しました。私はそのリンクを参照してくださいするため
def ListedenLinkAl(h):
if h in Yeni_A_url_list:
print(h)
g=requests.get(h)
g.raise_for_status()
data_mtn=g.text
data_soup=BeautifulSoup(data_mtn,"lxml")
oP=[b.get("href") for b in data_soup.find_all("a")]
tk=list(set(oP))
sleep(3)
return tk
プリントがあります。だから私はそれがだからここのページA.内のすべてのリンクのページBのレベル内のすべてのリンクを取得するための関数を書く時間が私の関数である、と思いましたその機能によって解決されており、何らかの理由でサーバを過充電しないように眠っているのですが、time.sleepは構文上のエラーを明らかにしました。 ListedenLinkAl(Yeni_A_url_list[1])
だから私はリストYeni_A_url_list
のすべての要素にこの機能を適用するための時間である、と思って、リストの内包表記をした:
Temiz_url_Listesi=[ListedenLinkAl(x) for x in Yeni_A_url_list]
機能は、以下が働いていた意味、リストの単一の要素のために働いていました関数がリスト内包で、リスト内の単一の要素のために動作しますが、ではない、なぜ私は見当がつかない
In [45]: Temiz_url_Listesi=[ListedenLinkAl(x) for x in Yeni_A_url_list]
http://cal1.cn.huc.edu/showsubtexts.php?keyword=21200
Traceback (most recent call last):
File "<ipython-input-45-8e4811c83c3f>", line 1, in <module>
Temiz_url_Listesi=[ListedenLinkAl(x) for x in Yeni_A_url_list]
File "<ipython-input-45-8e4811c83c3f>", line 1, in <listcomp>
Temiz_url_Listesi=[ListedenLinkAl(x) for x in Yeni_A_url_list]
File "<ipython-input-36-390e6ed1eae5>", line 6, in ListedenLinkAl
g=requests.get(h)
File "/home/dk/anaconda3/lib/python3.5/site-packages/requests/api.py", line 67, in get
return request('get', url, params=params, **kwargs)
File "/home/dk/anaconda3/lib/python3.5/site-packages/requests/api.py", line 53, in request
return session.request(method=method, url=url, **kwargs)
File "/home/dk/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 468, in request
resp = self.send(prep, **send_kwargs)
File "/home/dk/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 570, in send
adapter = self.get_adapter(url=request.url)
File "/home/dk/anaconda3/lib/python3.5/site-packages/requests/sessions.py", line 644, in get_adapter
raise InvalidSchema("No connection adapters were found for '%s'" % url)
InvalidSchema: No connection adapters were found for 'http://cal1.cn.huc.edu/showsubtexts.php?keyword=21200'
In [46]:
:
そして は、私は次のエラーを受け取りました。
、最初のURLの周りの余分な文字がありましたが、str.strip()」didnの私の問題を解決する代わりに、リスト内包の最初のURLをスキップし、2番目のURLからリストを開始しました。私の機能が今働いているようです。 –