1
テーブルを印刷することはできますが、同じデータを.csvファイルに取り出すことはできません。私は毎日掻きと学習に新しいです。スクラップテーブルのデータを.csvに
どのようにしてこのデータをCSVファイルにスクレイプできますか?
標準ライブラリモジュール 輸入OS 輸入SYS
テーブルを印刷することはできますが、同じデータを.csvファイルに取り出すことはできません。私は毎日掻きと学習に新しいです。スクラップテーブルのデータを.csvに
どのようにしてこのデータをCSVファイルにスクレイプできますか?
標準ライブラリモジュール 輸入OS 輸入SYS
# The wget module
import wget
# The BeautifulSoup module
from bs4 import BeautifulSoup
# The selenium module
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome() # if you want to use chrome, replace Firefox() with Chrome()
driver.get("https://www.arcountydata.com/county.asp?county=Benton") # load the web page
search_begin = driver.find_element_by_xpath("//*[@id='Assessor']/div/div[2]/a/i").click()
# for websites that need you to login to access the information
elem = driver.find_element_by_id("OwnerName") # Find the email input field of the login form
elem.send_keys("Roth Family Inc") # Send the users email
search_exeute = driver.find_element_by_xpath("//*[@id='Search']").click()
src = driver.page_source # gets the html source of the page
parser = BeautifulSoup(src,"lxml") # initialize the parser and parse the source "src"
table = parser.find("table", attrs={"class" : "table table-striped-yellow table-hover table-bordered table-condensed table-responsive"}) # A list of attributes that you want to check in a tag)
f = open('/output.csv', 'w')
parcel=""
owner=""
ptype=""
site_address=""
location=""
acres=""
summons =[]
#print table
list_of_rows = []
for row in table.findAll('tr')[1:]:
list_of_cells = []
for cell in row.findAll('td'):
text = cell.text.replace(" ", "")
list_of_cells.append(text)
list_of_rows.append(list_of_cells)
print list_of_rows
driver.close() # closes the driver ?>
あなた罰金卿に新しいメンバー、幸運を見て非常に素晴らしいです! あなたはすばらしい仕事をしています。あなたはコードを非常に上手くコメントしました。それはあなたがそれを理解して、偉大な仕事をしていることを意味します!
import csv
これは、CSVファイルの読み込み/書き込みが容易なPythonモジュールです。最初にインポートしてみましょう。
with open(name_csv+'.csv', 'w+') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',')
spamwriter.writerow(list_of_rows)
#Used to write 1 row, each element in the array will be seperated by a comma
EDIT:
with open('somecsv.csv','w+') as csvfile:
spamwriter = csv.writer(csvfile, delimiter='|') # Changed the delimiter (Way of separating)
# This opens the CSV file and we set some additional parameters
for row in table.findAll('tr')[::2]:
list_of_cell = []
for cell in row.findAll('td')[:5]:
text = cell.text.replace(" ", "").strip()
text = text.replace('''...\n\n\n'''," |") #This one is added so it replaces string before Lot with comma
text = text.replace(''':\n''',':') #This one is added so it doesn't interfere
text = text.replace('''\n''','|') #Adds a comma before block
list_of_cell.append(text)
print(list_of_cell)
spamwriter.writerow(list_of_cell)
おかげ不良..私は今、CSVファイルにデータを解析することが可能だとして、それが役立ちます。しかし、データ全体が1行に解析されます。htmlテーブルで明らかなように、行ごとに解析するようにすればいいですか... – user3691781
これはうまくいくはずですが、csvをインポートすることを忘れないでください。 selenctionセレンも追加する予定です。 –
ありがとうございました。私は今日何か新しいことを学ぶのに役立ちます。コードをさらにスクラブしようとします...いくつかのデータは複数の行で解析される列です。 – user3691781