In Methode parse()
Spider kriecht 4 URLs und sendet dann an Methode parse_dir_contents()
, um einige Daten zu kratzen, aber nur 4. URL wird gekratzt Ich verstehe nicht, warum es andere 3 URLs nicht schabt?was ist mit dieser scrapy spinne falsch? scrapes only letzte URL
import scrapy
from v_one.items import VOneItem
import json
class linkedin(scrapy.Spider):
name = "linkedin"
allowed_domains = ["linkedin.com"]
start_urls = [
"https://in.linkedin.com/directory/people-s-1-2-4/",
]
def parse(self, response):
for href in response.xpath('//*[@id="seo-dir"]/div/div/div/ul/li/a/@href'):
url = response.urljoin(href.extract())
print "________________"+url
yield scrapy.Request(url, callback=self.parse_dir_contents)
def parse_dir_contents(self, response):
for sel in response.xpath('//*[@id="profile"]'):
url = response.url
print "____________"+url
item = VOneItem()
item['name'] = sel.xpath('//*[@id="name"]/text()').extract()
item['headline'] = sel.xpath('//*[@id="topcard"]/div/div/div/p/span/text()').extract()
item['current'] = sel.xpath('//*[@id="topcard"]/div/div/div/table/tbody/tr/td/ol/li/span/text()').extract()
item['education'] = sel.xpath('//*[@id="topcard"]/div/div/div/table/tbody/tr/td/ol/li/a/text()').extract()
item['link'] = url
yield item
Ihr Code besucht bereits jede Seite/jeden Link, also weiß ich nicht, wie Sie denken, dass er nicht jede URL scrappt. Auch Ihre XPaths sind sehr spröde, es gibt viele Klassennamen, um die Daten genauer zu bekommen. Auch tbody wird in der Regel vom Browser hinzugefügt, so dass es nicht wirklich sein kann –