Dopo aver passato un po 'di tempo con questo per 3 ore, sono riuscito a creare un documento XML parseable dai dati. Sfortunatamente, non sono riuscito a mettere insieme una serie di passaggi completamente riutilizzabili che potrei utilizzare per le future pubblicazioni sulle aste.
Per inciso, ho tentato di chiamare e chiedere alla Contea di Los Angeles se potevano fornire un formato alternativo delle proprietà all'asta (excel, ecc.) E la risposta era no. Questo è il governo per te.
Ecco una vista di alto livello del mio approccio:
- Convertire il PDF in un file di testo utilizzando Poppler
- Usa RegEx foo per ripulire e creare nodi XML dai dati
- Usa un beautifier/validator XML per trovare errori e fare pulizia
- Usa Python/ruby per aggiungere il nodo Link di Google Maps e il link alla mappa degli Assessor della contea di LA (http://assessormap.co.la.ca.us/mapping/rolldata.asp?ain=APN-GOES_HERE) e
- Conversione XML in formato CSV con Ruby
ho usato http://xmlbeautifier.com/ come mio XML beautifier/validatore perché era veloce e ha dato accurata segnalazione degli errori, compresi i numeri di riga.
Usa Homebrew installare Poppler per Mac:
brew install poppler
Dopo aver installato Poppler, si dovrebbe avere accesso al programma di utilità pdftotext per convertire il file PDF:
pdftotext -layout -f 24 -l 687 AuctionBook2013.pdf auction_book.txt
Ecco un'anteprima del XML (Click here for full XML):
<?xml version="1.0" encoding="UTF-8"?>
<listings>
<item id="1">
<nsb>536</nsb>
<minbid>3,422</minbid>
<apn>2006 003 001</apn>
<delinquent_year>03</delinquent_year>
<apn_old>2006 003 001</apn_old>
<description>LICENSED SURVEYOR'S MAP
AS PER BK 25 PG 28 OF L S LOT 1
BLK 1 ASSESSED TO J AND S
LIMITED LLC C/O DUNA CSARDAS -
JULIUS JANCSO LOCATION COUNTY OF
LOS ANGELES</description>
<address>VACANT LOT</address>
</item>
Modifica: aggiunta del Ruby Ho scritto per convertire l'XML in un CSV.
require 'rexml/document'
require 'CSV'
class Auction
def initialize
f = File.new('AuctionBook2013.xml', 'r')
doc = REXML::Document.new(f)
CSV.open("auction.csv", "w+b") do |csv|
csv << ['id', 'minbid', 'apn', 'delinquent_year', 'apn_old', 'description', 'address']
doc.elements.each('/listings/item') do |item|
csv << [item.attributes['id'],
item.elements['minbid'].text,
item.elements['apn'].text,
item.elements['delinquent_year'].text,
item.elements['apn_old'].text,
item.elements['description'].text,
item.elements['address'].text]
end
end
end
end
a = Auction.new()
Link to Final CSV
Il mio pensiero sarebbe quello di utilizzare un pdf al convertitore del testo e quindi analizzare il file di testo (assumendo che il convertitore ti dà un formato di output prevedibile). –
Sì, ci ho provato. C'è un progetto rubino che ho provato (https://github.com/kitplummer/pdftohtmlr) e sputa fuori spazzatura. – doremi
Che dire del testo? Sembra che faccia html. –