Ich habe mich umgesehen und kann die Antwort nicht finden, die ich suche. Ich habe meinen Crawler (Scrapy), um die Ergebnisse in die Nähe meiner Suche zu bringen. Also versuche ich jetzt, die multiplen Ergebnisse von der Seite zu ziehen. Momentan zieht es den ersten und stoppt. Wenn ich extract_first() abnehme, zieht es alle Daten und gruppiert sie. Also auf der Suche nach einer von 2 Antworten, die funktionieren würden.Scrapy endet nach dem ersten Ergebnis
1) weiterhin Ergebnisse kriechen und nicht 2) ungroup jedes Element auf einer neuen Zeile der Ergebnisse
Hier endet mein Code:
import scrapy
from scrapy.selector import Selector
from urlparse import urlparse
from urlparse import urljoin
from scrapy import Request
from scrapy.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
#from scrappy.http import HtmlResponse
class MySpider(CrawlSpider):
name = "ziprecruiter"
def start_requests(self):
allowed_domains = ["https://www.ziprecruiter.com/"]
urls = [
'https://www.ziprecruiter.com/candidate/search?search=operations+manager&location=San+Francisco%2C+CA'
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for houses in response.xpath('/html/body'):
yield {
'Job_title:' : houses.xpath('.//span[@class="just_job_title"]//text()[1]').extract_first(),
'Company:' : houses.xpath('.//a[@class="t_org_link name"]//text()[1]').extract_first(),
'Location:' : houses.xpath('.//a[@class="t_location_link location"]//text()[1]').extract_first(),
'FT/PT:' : houses.xpath('.//span[@class="data_item"]//text()[1]').extract_first(),
'Link' : houses.xpath('/html/body/main/div/section/div/div[2]/div/div[2]/div[1]/article[4]/div[1]/button[1]/text()').extract_first(),
'Link' : houses.xpath('.//a/@href[1]').extract_first(),
'pay' : houses.xpath('./section[@class="perks_item"]/span[@class="data_item"]//text()[1]').extract_first()
}
Vielen Dank im Voraus!
EDITIEREN :: Nach mehr Forschung habe ich den Container zum Crawlen neu definiert und das gibt mir die richtigen Antworten. Nun meine Frage ist, wie bekomme ich jedes Element auf der Seite statt nur das erste Ergebnis ... es ist einfach nicht loop. Heres mein Code:
import scrapy
from scrapy.selector import Selector
from urlparse import urlparse
from urlparse import urljoin
from scrapy import Request
from scrapy.spiders import CrawlSpider, Rule
from scrapy.selector import HtmlXPathSelector
#from scrappy.http import HtmlResponse
class MySpider(CrawlSpider):
name = "ziprecruiter"
def start_requests(self):
allowed_domains = ["https://www.ziprecruiter.com/"]
urls = [
'https://www.ziprecruiter.com/candidate/search?search=operations+manager&location=San+Francisco%2C+CA'
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for houses in response.xpath('/html/body/main/div/section/div/div[2]/div/div[2]/div[1]/article[1]/div[2]'):
yield {
'Job_title:' : houses.xpath('.//span[@class="just_job_title"]//text()').extract(),
'Company:' : houses.xpath('.//a[@class="t_org_link name"]//text()').extract(),
'Location:' : houses.xpath('.//a[@class="t_location_link location"]//text()').extract(),
'FT/PT:' : houses.xpath('.//span[@class="data_item"]//text()').extract(),
'Link' : houses.xpath('.//a/@href').extract(),
'pay' : houses.xpath('./section[@class="perks_item"]/span[@class="data_item"]//text()').extract()
}
Ich bekomme nur ein einzelnes div-Element aus dem von Ihnen bereitgestellten xpath, was erklärt, warum die houses-Schleife nur einmal ausgeführt wird. Für mich scheint etwas mit deinem XPath nicht in Ordnung zu sein. – lancew