Ich versuche, eine Website zu kratzen, https://www.searchiqs.com/nybro/ (Sie müssen auf "Anmelden als Gast" klicken, um zum Suchformular zu gelangen. Wenn ich nach einem Begriff Party 1 wie sagen "Andrew "Die Ergebnisse haben Paginierung und auch der Anfragetyp ist POST, also ändert sich die URL nicht und auch die Sessions sind sehr schnell. So schnell, dass wenn ich zehn Minuten warte und die Such-URL-Seite aktualisiere, gibt es einen Timeout-Fehler.Wie aspx Seiten mit Python kratzen
Ich habe vor kurzem mit dem Scraping begonnen, also habe ich meistens GET-Posts gemacht, wo ich die URL entziffern kann, also habe ich bis jetzt erkannt, dass ich das DOM anschauen muss Von den Netzwerk-Registerkarten habe ich auch Folgendes als die Formulardaten herausgefunden, die von der Suchseite an die Ergebnisse p übergeben werden Alter
__EVENTTARGET:
__EVENTARGUMENT:
__LASTFOCUS:
__VIEWSTATE:/wEPaA8FDzhkM2IyZjUwNzg...(i have truncated this for length)
__VIEWSTATEGENERATOR:F92D01D0
__EVENTVALIDATION:/wEdAJ8BsTLFDUkTVU3pxZz92BxwMddqUSAXqb... (i have truncated this for length)
BrowserWidth:1243
BrowserHeight:705
ctl00$ContentPlaceHolder1$scrollPos:0
ctl00$ContentPlaceHolder1$txtName:david
ctl00$ContentPlaceHolder1$chkIgnorePartyType:on
ctl00$ContentPlaceHolder1$txtFromDate:
ctl00$ContentPlaceHolder1$txtThruDate:
ctl00$ContentPlaceHolder1$cboDocGroup:(ALL)
ctl00$ContentPlaceHolder1$cboDocType:(ALL)
ctl00$ContentPlaceHolder1$cboTown:(ALL)
ctl00$ContentPlaceHolder1$txtPinNum:
ctl00$ContentPlaceHolder1$txtBook:
ctl00$ContentPlaceHolder1$txtPage:
ctl00$ContentPlaceHolder1$txtUDFNum:
ctl00$ContentPlaceHolder1$txtCaseNum:
ctl00$ContentPlaceHolder1$cmdSearch:Search
Alle in Kappen sind versteckt. Ich habe es auch geschafft, die Ergebnisstruktur herauszufinden.
Mein Skript ist bisher wirklich erbärmlich, da ich völlig leer bin, was ich als nächstes tun soll. Ich bin immer noch dabei, die Formularübergabe zu machen, die Seitennummerierung zu analysieren und das Ergebnis abzuschaben, aber ich habe absolut keine Ahnung, wie ich vorgehen soll.
import re
import urlparse
import mechanize
from bs4 import BeautifulSoup
class DocumentFinderScraper(object):
def __init__(self):
self.url = "https://www.searchiqs.com/nybro/SearchResultsMP.aspx"
self.br = mechanize.Browser()
self.br.addheaders = [('User-agent',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7')]
##TO DO
##submit form
#get return URL
#scrape results
#analyze pagination
if __name__ == '__main__':
scraper = DocumentFinderScraper()
scraper.scrape()
Jede Hilfe wäre geschätzt teuer
Es ist leichter POST zu senden oder GET statt wirklich ein Formular abgeschickt:
Dieser Code sollte Sie sich Selen in Verwendung. Die Seitennummerierung kann durchgeführt werden, indem die nächste Schaltfläche gefunden und angeklickt wird, bis sie nicht gefunden wird. –
http://stackoverflow.com/questions/37393171/how-to-scrap-images-from-a-aspx-page/37401048#37401048 –
Sie können auch versuchen, dies zu Ihrem Python-Skript hinzuzufügen: 'logger = logging .getLogger ("mechanize") logger.addHandler (Protokollierung.StreamHandler (sys.stdout)) logger.setLevel (logging.INFO) '. Es ist im Debugging-Abschnitt hier zu finden: http://www.search.sourceforge.net/mechanize/ ... (Es ist übrigens drei Zeilen, - nicht in der Lage, es richtig in einem Kommentar zu formatieren). – Zeth