2017-07-26 13 views
0

私の博士号の一部として研究、私は多くのウェブページを掻き集めて、スクレイプ結果内のキーワードを検索しています。これはうまく動作します結果をスクレイプして保存し、PythonとPandasで検索しますか?

# load data with as pandas data frame with column df.url 
df = pd.read_excel('sample.xls', header=0) 

# define keyword search function 

def contains_keywords(link, keywords): 
    try: 
     output = requests.get(link).text 
     return int(any(x in output for x in keywords)) 
    except: 
     return "Wrong/Missing URL" 

# define the relevant keywords 
mykeywords = ('for', 'bar') 

# store search results in new column 'results' 
df['results'] = df.url.apply(lambda l: contains_keywords(l, mykeywords)) 

は、これは私がこれまでにそれを行う方法です。 1つの問題しかありません。関連キーワードのリストmykeywordsが頻繁に変更されますが、ウェブページは同じままです。私はrequest何度も何度も繰り返しているので、コードの実行には長い時間がかかります。

I持っている二つの質問:

(1)request.get(link).textの結果を格納する方法はありますか?

(2)もしそうなら、現在のスクリプトと同じ結果を生む保存されたファイル内をどのように検索するのですか?

いつもありがとうございました。/R

+1

の絶対パスを使用:'出力= requests.getを(リンク).text' with: 'output = open( 'urls /' + link).read()' –

+0

これは、後でインデックス化できる複数のファイルを作成しますか?要求されたURLごとにファイル名を指定する必要はありませんか? – Rachel

+1

a)各リンクの内容をダウンロードし、ローカルディスクに保存します。適切な名前を使用します。例: "some.site.com_some_path.html" b)ファイルの名前を 'contains_keywords'に渡し、ファイルを読み込みます。 –

答えて

0

あなたが(例:「リンク」)URLのコンテンツをダウンロードし、ディレクトリ内の別々のファイルに保存することができ

def get_link(url): 
    file_name = os.path.join('/path/to/links', url.replace('/', '_').replace(':', '_')) 
    try: 
     r = requests.get(url) 
    except Exception as e: 
     print("Failded to get " + url) 
    else: 
     with open(file_name, 'w') as f: 
      f.write(r.text) 

次に、あなたが勝ったので、ローカルファイルを読むためにcontains_keywords機能を変更スクリプトを実行するたびにrequestsを使用する必要があります。

def contains_keywords(link, keywords): 
    file_name = os.path.join('/path/to/links', link.replace('/', '_').replace(':', '_')) 
    try: 
     with open(file_name) as f: 
      output = f.read() 
     return int(any(x in output for x in keywords)) 
    except Exception as e: 
     print("Can't access file: {}\n{}".format(file_name, e)) 
     return "Wrong/Missing URL" 

編集:私はちょうどget_linkでのtry-除くブロックを追加し、ちょうど `urls`ディレクトリ内のファイルに保存し、このライン置き換えるfile_name

+0

スーパー、素敵!ありがとうございました! – Rachel

+1

ようこそ@Rachel –

関連する問題