Ich versuche Scrapy mit Selen zu verwenden, um mit Javascript interagieren zu können und habe immer noch das mächtige Scraping-Framework, das scrapy bietet. Ich habe ein Skript geschrieben, das http://www.iens.nl besucht, "Amsterdam" in die Suchleiste eingibt und dann erfolgreich auf die Suchschaltfläche klickt. Nachdem ich auf den Suchknopf geklickt habe, möchte ich scrapy ein Element von der neu gerenderten Seite abrufen. Leider gibt scrapy keine Werte zurück. DieseSelenium + Scrapy verwenden
ist, was mein Code wie folgt aussieht:
from selenium import webdriver
from scrapy.loader import ItemLoader
from scrapy import Request
from scrapy.crawler import CrawlerProcess
from properties import PropertiesItem
import scrapy
class BasicSpider(scrapy.Spider):
name = "basic"
allowed_domains = ["web"]
# Start on a property page
start_urls = ['http://www.iens.nl']
def __init__(self):
chrome_path = '/Users/username/Documents/chromedriver'
self.driver = webdriver.Chrome(chrome_path)
def parse(self, response):
self.driver.get(response.url)
text_box = self.driver.find_element_by_xpath('//*[@id="searchText"]')
submit_button = self.driver.find_element_by_xpath('//*[@id="button_search"]')
text_box.send_keys("Amsterdam")
submit_button.click()
l = ItemLoader(item=PropertiesItem(), response=response)
l.add_xpath('description', '//*[@id="results"]/ul/li[1]/div[2]/h3/a/')
return l.load_item()
process = CrawlerProcess()
process.crawl(BasicSpider)
process.start()
"Eigenschaften" ein anderes Skript, das wie folgt aussieht:
from scrapy.item import Item, Field
class PropertiesItem(Item):
# Primary fields
description = Field()
F: Wie kann ich erfolgreich das Element scrapy finden machen Ich rufe "description" durch seinen xpath auf der Seite Selen erreicht und gebe es als Ausgabe zurück?
Vielen Dank im Voraus!
Haben Sie konfiguriert, dass Ihr Code "Parse" erreicht? mit einem print oder sowas – eLRuLL
@eLRuLL hat es 'parse' erreicht, sonst wäre Selen nicht auf die nächste Seite gerückt, oder? – titusAdam
Sie möchten vielleicht einen Blick darauf werfen, für andere Möglichkeiten, Scrapy mit Selen zu verbinden: http://stackoverflow.com/a/36085533/1204332 –