2017-02-25 14 views
-3

Hallo Stackoverflow-Community, bitte helfen Sie mir, mein Code: {scrapy, Liste von URLs, Python, Pandas

import scrapy 
import pandas as pd 
class QuotesSpider(scrapy.Spider): 
    organization=pd.read_csv("/home/jihane/Téléchargements/odm.csv/organizations.csv") 
    data = organization.twitter_url.tolist()  
    def start_requests(self):  
     urls = data   
     for url in urls:   
     yield scrapy.Request(url=url, callback=self.parse)  
    def parse(self, response):   
     y=dict()  
     page=response.url  
     societe= response.url.split("/")[-1]   
     y["url"]=page   
     y["name"]=societe   
     for t, v in zip(response.css("span.ProfileNavlabel::text"),response.css("span.Profile-Nav-value::text")): 
      t= t.extract() 
      v= v.extract()    
      y[t]=v   
      print(y) 

}

Der Teil, wo ich eine Liste aus einer Spalte verwenden möchten von eine csv-datei gibt mir einen fehler, ich möchte auch wissen, wie ich einen dictionary in einen datenrahmen umwandeln kann. Danke sooo viel

Antwort

0

dieser Code arbeitet für mich; eine Liste von URLs mit der gleichen Struktur

import scrapy 
    class QuotesSpider(scrapy.Spider): 
     name="popularity" 
     def start_requests(self): 
      with open('csvfile', 'rb') as f: 
       list=[] 
       for line in f.readlines(): 
        array = line.split(',') 
        url = array[9] 
        list.append(url) 
       list.pop(0) 
      for url in list: 
       if url != "": 
        yield scrapy.Request(url=url, callback=self.parse) 

     def parse(self, response): 
      y={} 
      page=response.url  
      societe= response.url.split("/")[-1] 
      y={"url":page,"name":societe} #url and name of the entreprise 
      for t, v in zip(response.css("span.ProfileNav-label::text"),response.css("span.ProfileNav-value::text")): 
       t = t.extract() #label 
       v = v.extract() #valeur label 
       y[t]=v 
      yield y 
Verwandte Themen