2017-02-20 17 views
0

私はウェブサイトからデータを取り出すためのスクリプトを書いた。しかし数回後、私は要求すると403の禁止を示します。ウェブスクレイピングと403禁止:私のウェブスクレーパーはウェブサイトによってブロックされていますが、私は何を要求する必要がありますか?

この問題を解決するにはどうすればよいですか。

私のコードは以下の通りです:

import requests, bs4 
import csv 

links = [] 
with open('1-432.csv', 'rb') as urls: 
    reader = csv.reader(urls) 
    for i in reader: 
     links.append(i[0]) 
info = [] 
nbr = 1 

for url in links: 

    # Problem is here. 
    sub = [] 
    r = requests.get(url) 
    soup  = bs4.BeautifulSoup(r.text, 'lxml') 
    start = soup.find('em') 
    forname = soup.find_all('b') 
    name = [] 


    for b in forname: 
     name.append(b.text) 
    name = name[7] 
    sub.append(name.encode('utf-8')) 
    for b in start.find_next_siblings('b'): 
     if b.text in ('Category:', 'Website:', 'Email:', 'Phone'): 
      sub.append(b.next_sibling.strip().encode('utf-8')) 
    info.append(sub) 
    print('Page ' + str(nbr) + ' is saved') 
    with open('Canada_info_4.csv', 'wb') as myfile: 
     wr = csv.writer(myfile,quoting=csv.QUOTE_ALL) 
     for u in info: 
      wr.writerow(u) 
    nbr += 1 

私はウェブサイトへのリクエストをするために何をすべきか。 URLの例はhttp://www.worldhospitaldirectory.com/dr-bhandare-hospital/info/43225

ありがとうございます。

+0

ブロックされているとブロックされます。ほとんどのウェブサイトでは、掻き分けを淡々としています。あなたはおそらくその利用規約に違反しているでしょう – e4c5

+1

私は本当にプログラミングの質問ではないので、話題としてこの質問を閉じるために投票しています – e4c5

答えて

0

問題が発生する可能性があるさまざまなことがあります。また、ブラックリストのポリシーによって修正が遅れる可能性があります。

少なくとも、このような削りは、一般的にはディックの行動とみなされます。あなたは彼らのサーバーを叩いている。メインループの内側にtime.sleep(10)を入れてみてください。

第2に、ユーザーエージェントを設定してみてください。 hereまたはhere

あなたが使用できるAPIを持っているかどうかはわかりますが

+0

ありがとう、ありがとう。試してみます。 –

関連する問題