Wie es scheint hier häufig passieren, bin ich ziemlich neu in Python 2.7 und Scrapy. Unser Projekt hat uns das Website-Datum gekratzt, einigen Links gefolgt und mehr Scraping, und so weiter. Das war alles in Ordnung. Dann habe ich Scrapy aktualisiert.Spider wird nach der Aktualisierung von Scrapy nicht laufen
Nun, wenn ich meine Spinne starten, erhalte ich die folgende Meldung:
Dies war nicht vorher überall kommen (keine meiner früheren Fehlermeldungen alles so aussah). Ich laufe jetzt scrapy 1.1.0 auf Python 2.7. Und keine der Spinnen, die vorher an diesem Projekt gearbeitet haben, funktionieren.
Ich kann bei Bedarf Beispielcode bereitstellen, aber mein (zugegebenermaßen begrenztes) Wissen über Python legt mir nahe, dass es nicht einmal zu meinem Skript kommt, bevor ich es ausbomben kann.
EDIT: OK, so dass dieser Code soll auf der ersten Autoren-Seite für Deakin University Wissenschaftler auf das Gespräch beginnen, und gehen Sie durch und kratzen, wie viele Artikel sie geschrieben haben und Kommentare sie gemacht haben.
import scrapy
from ltuconver.items import ConversationItem
from ltuconver.items import WebsitesItem
from ltuconver.items import PersonItem
from scrapy import Spider
from scrapy.selector import Selector
from scrapy.http import Request
import bs4
class ConversationSpider(scrapy.Spider):
name = "urls"
allowed_domains = ["theconversation.com"]
start_urls = [
'http://theconversation.com/institutions/deakin-university/authors']
#URL grabber
def parse(self, response):
requests = []
people = Selector(response).xpath('///*[@id="experts"]/ul[*]/li[*]')
for person in people:
item = WebsitesItem()
item['url'] = 'http://theconversation.com/'+str(person.xpath('a/@href').extract())[4:-2]
self.logger.info('parseURL = %s',item['url'])
requests.append(Request(url=item['url'], callback=self.parseMainPage))
soup = bs4.BeautifulSoup(response.body, 'html.parser')
try:
nexturl = 'https://theconversation.com'+soup.find('span',class_='next').find('a')['href']
requests.append(Request(url=nexturl))
except:
pass
return requests
#go to URLs are grab the info
def parseMainPage(self, response):
person = Selector(response)
item = PersonItem()
item['name'] = str(person.xpath('//*[@id="outer"]/header/div/div[2]/h1/text()').extract())[3:-2]
item['occupation'] = str(person.xpath('//*[@id="outer"]/div/div[1]/div[1]/text()').extract())[11:-15]
item['art_count'] = int(str(person.xpath('//*[@id="outer"]/header/div/div[3]/a[1]/h2/text()').extract())[3:-3])
item['com_count'] = int(str(person.xpath('//*[@id="outer"]/header/div/div[3]/a[2]/h2/text()').extract())[3:-3])
Und in meinen Einstellungen, die ich habe:
BOT_NAME = 'ltuconver'
SPIDER_MODULES = ['ltuconver.spiders']
NEWSPIDER_MODULE = 'ltuconver.spiders'
DEPTH_LIMIT=1
Zeigen Sie Ihre Dateien. Dies ist ein Tippfehler – Nabin