Ich habe eine scrapy Crawlspider, die Links analysiert und HTML-Inhalt zurückgibt gut. Bei JavaScript-Seiten habe ich Selenium allerdings dazu aufgerufen, auf den "versteckten" Inhalt zuzugreifen. Das Problem ist, dass, während Selen außerhalb des scrapy Parsing funktioniert, funktioniert es nicht innerhalb der parse_itemsSelen innerhalb von Scrapy funktioniert nicht
funktionierenfrom scrapy.spiders import CrawlSpider, Rule, Spider
from scrapy.selector import HtmlXPathSelector
from scrapy.linkextractors import LinkExtractor
from scrapy.linkextractors.sgml import SgmlLinkExtractor
from craigslist_sample.items import CraigslistReviewItem
import scrapy
from selenium import selenium
from selenium import webdriver
class MySpider(CrawlSpider):
name = "spidername"
allowed_domains = ["XXXXX"]
start_urls = ['XXXXX']
rules = (
Rule(LinkExtractor(allow = ('reviews\?page')),callback= 'parse_item'),
Rule(LinkExtractor(allow=('.',),deny = ('reviews\?page',)),follow=True))
def __init__(self):
#this page loads
CrawlSpider.__init__(self)
self.selenium = webdriver.Firefox()
self.selenium.get('XXXXX')
self.selenium.implicitly_wait(30)
def parse_item(self, response):
#this page doesnt
print response.url
self.driver.get(response.url)
self.driver.implicitly_wait(30)
#...do things
Sie beschreiben nicht, was es genau ist, funktioniert nicht noch was du versucht hast. Wir müssen irgendwie wissen, was "# ... Dinge tun" tatsächlich tut. – Mobrockers
HINWEIS: Bitte verwenden Sie nicht Modulname als Variablenname in Ihrem Skript, wie Sie "selen" verwenden –