2015-06-27 2 views
0

Я хочу, чтобы очистить данные с сайта http://www.quoka.de/immobilien/bueros-gewerbeflaechen с этим фильтром:Python SCRAPY паук

<a class="t-bld" rel="nofollow" href="javascript:qsn.set('classtype','of',1);">nur Angebote</a> 

Как установить этот фильтр с помощью Scrapy?

ответ

0

Одним из способов является путем подачи запроса с параметром и синтаксический анализ результата из ответ. См. Следующий пример кода:

import scrapy 

class TestSpider(scrapy.Spider): 

    name = 'quoka' 
    start_urls = ['http://www.quoka.de/immobilien/bueros-gewerbeflaechen'] 

    def parse(self, response): 

     request = scrapy.FormRequest.from_response(
      response, 
      formname='frmSearch', 
      formdata={'classtype': 'of'}, 
      callback=self.parse_filtered 
     ) 
     # print request.body 
     yield request 

    def parse_filtered(self,response): 

     searchResults = response.xpath('//div[@id="ResultListData"]/ul/li') 
     for result in searchResults: 
      title = result.xpath('.//div[@class="q-col n2"]/a/@title').extract() 
      print title 
+0

Примите мой ответ, если он решит ваш вопрос. Пожалуйста, не используйте комментарии для публикации новых вопросов, но создайте новый вопрос и покажите код, и что вы ожидаете, и что получите. См. [Ask] для получения дополнительной информации. –

2

Вы можете разобрать определенный сайт, используя Beautifulsoup и urllib2. Вот реализация python для данных, которые вы хотели разобрать или очистить в соответствии с фильтром, который вы написали.

from BeautifulSoup import BeautifulSoup 
import urllib2 

def main1(website): 
    data_list = [] 
    web =urllib2.urlopen(website).read() 
    soup = BeautifulSoup(web) 
    description = soup.findAll('a', attrs={'rel':'nofollow'}) 
    for de in description: 
     data_list.append(de.text) 
    return data_list 

print main1("http://www.quoka.de/immobilien/bueros-gewerbeflaechen") 

Если вы хотите, чтобы проанализировать другие данные, например, описание из следующих функций:

enter image description here

def main(website): 
    data_list = [] 
    web =urllib2.urlopen(website).read() 
    soup = BeautifulSoup(web) 
    description = soup.findAll('div', attrs={'class':'description'}) 
    for de in description: 
     data_list.append(de.text) 
    return data_list 

print main("http://www.quoka.de/immobilien/bueros-gewerbeflaechen") #this is the data of each section 
+0

Спасибо, но я могу использовать только терапию. Единственная проблема в том, что я не знаю, как использовать фильтр с помощью scrapy. – Dmitriy

Смежные вопросы