2016-12-14 9 views
0

私は今この鉱山のジレンマにどう対処するかについて頭を悩ましています。私は、アドレスのリストを含む私のCSVファイルにアドレス列を持っています。私は、Pythonがcsvファイル内の個々のアドレス値を使って以下に指定されたWebサイトを検索し、その結果を新しいcsvファイルに保存するように指示したいと思います。例えばアドレスの値をウェブサイトで検索

import csv 
import requests 

with open('C:/Users/thefirstcolumn.csv') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     print(row['Address']) 

website = requests.get('https://etrakit.friscotexas.gov/Search/permit.aspx') 

writer = csv.writer(open('thematchingresults.csv', 'w')) 

print website.content 

:私はcsvファイルで持っているアドレス値の

ワン:私は手動で検索ボックスにアドレスを貼り付けるとき

6525 Mountain Sky Rd 

は、データの3つの行を返します。どのように私はウェブサイト上のcsvファイル内の各アドレスを検索し、新しいcsvファイルに各アドレスの結果を保存するようにPythonに指示できますか?この山岳の仕事をどうすれば達成できますか?

+0

できないことはありますか? –

+0

私は、Pythonがアドレス列の各値を1つずつ検索するように指示する方法について助けが必要です。どうやってやるの? –

答えて

3

要求モジュールは、Webサイトから静的なHTMLページをダウンロードします。あなたはあなたがあなたがCSVファイルで持っている各値のPOSTリクエストを行う必要があるだろう

from selenium import webdriver 
from bs4 import BeautifulSoup 
import time 
driver = webdriver.Firefox() 
driver.get('https://etrakit.friscotexas.gov/Search/permit.aspx') 
#read in addresses 
with open('file.csv','r') as f: 
    adresses = f.readlines() 

# use css selectors to locate search field 
for address in adresses: 
    driver.find_element_by_css_selector('#cplMain_txtSearchString').clear()  
    driver.find_element_by_css_selector('#cplMain_txtSearchString').send_keys(address) 
    driver.find_element_by_css_selector('#cplMain_btnSearch').click() 
    time.sleep(5) 
    # JS injected HTML 
    soup = BeautifulSoup(driver.page_source) 
    # extract relavant info from the soup 
    # and save to your new csv here 
+0

Thanks Tobey、私はSeleniumを試しましたが、私の理解から、Seleniumはブラウザを開き、それを自動化します。私はそれが実際にアドレス欄の値のそれぞれを検索ボックスで1つずつ検索できるとは思わない。 –

+0

私は答えを説明するために延長します – Tobey

+0

ありがとうTobeyは、このスクリプトは仕事のひどい行いますが、csvファイルのアドレスの結果は保存しません。どのように実装することができますか? –

2

例えば、ウェブサイト

と対話するSeleniumを使用する必要があるのJavascript

と対話することはできません。たとえば、「6525 Mountain Sky Rd」をhttps://etrakit.friscotexas.gov/Search/permit.aspxで検索するには、デベロッパーコンソールでどのPOSTパラメータが表示されているかを確認できます。たとえば:

enter image description here

あなたはrequestsのようなものを使用し、ヘッダの値とフォームデータを渡すか、ブラウザをエミュレートするcasperまたはseleniumのようなものを使用することができますすることができます。

+0

ここでセレンはどのように実行可能ですか?私は過去にそれを使用していました。わかりましたが、要するに、Webスクレイピングプロセスを自動化しています。 –

+0

@PLearnerもう一つの答えはそれについての非常に良い説明を与えます。それがあなたの問題を解決しないかどうか私に教えてください。 – David542

+0

スクリプトはジョブを実行しますが、csvファイルのアドレスの結果は保存しません。どのように実装することができますか? –

関連する問題