I scrapy und Selen zu verwenden, gerade erst begonnen, und ich habe einige Probleme mit einer Webseite in die Verschrottung, die unendliche Scrollen hat:Scrolling in Selenium nach unten mit Scrapy nicht funktioniert
http://observador.pt/opiniao/autor/ahcristo
So möchte ich Extrahieren Sie die Links für jeden Eintrag (politische Texte). Mit scrapy ist das alleine nicht möglich, da man scrollen muss, um alle Einträge anzeigen zu lassen. Ich benutze Selen, um den Chrome-Browser und Scroll-Dow zu simulieren. Mein Problem ist, dass das Scrollen nicht funktioniert. Ich habe den Code in anderen ähnlichen Beispielen wie this oder this basiert. Der Code zählt nach jedem Scrollen die Anzahl der gesamten Eintragslinks und wenn er in Ordnung war, sollte er nach jedem Schritt zunehmen. Es gibt mir eine konstante Anzahl von 24 Links.
## -*- coding: utf-8 -*-
import scrapy
from selenium import webdriver
import time
from observador.items import ObservadorItem
class OpinionSpider(scrapy.Spider):
name = "opinionspider"
start_urls = ["http://observador.pt/opiniao/"]
def __init__(self):
self.driver = webdriver.Chrome()
def parse(self, response):
# Colunistas
for url in response.xpath('//*[@id="main"]/div/div[1]/ul/li[1]/div/ul/li[*]/a/@href').extract():
# test for a single author
if url == 'http://observador.pt/opiniao/autor/ahcristo':
yield scrapy.Request(url,callback=self.parse_author_main_page)
else:
continue
def parse_author_main_page(self,response):
self.driver.get(response.url)
count = 0
for url in response.xpath('//*[@id="main"]/div/div[3]/div[1]/article[*]/h1/a/@href').extract():
count += 1
print "Number of links: ",count
for i in range(1,100):
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(4)
count = 0
for url in response.xpath('//*[@id="main"]/div/div[3]/div[1]/article[*]/h1/a/@href').extract():
count += 1
print "Number of links: ",count
self.driver.close()
Ok, danke für die Antwort. Wie hast du das herausgefunden? Ich gestehe, ich verstehe Ihre Antwort nicht sehr, und ich zeigte Ihnen ein Beispiel für den Autor "http://observador.pt/opiniao/autor/ahcristo". Ich muss die gleiche Verschrottung auf alle verschiedenen Autoren anwenden. – Miguel