Also, ich habe einen Crawler, die einige Daten aus Meta-Tags im Kopf und einige Element-Tags im Körper extrahieren müssen.Scrapy: So wählen Kopf und Körper Tags zusammen
Wenn ich versuche, dieses
für Kurse in response.xpath ("// html"):
und diese
für Kurse in response.xpath (“ // Kopf "):
es holt nur Daten von den Metatags im <head>... </head>
tag.
wenn ich versuche, diesen
für Kurse in response.xpath ("// body"):
es nur Daten aus den Tags im HTML-Tag <body>... </body>
holen.
Wie kombiniere ich diese 2-Selektoren, ich habe auch versucht,
für Kurse in response.xpath ("// Kopf | // body"):
aber es kehrte nur ' Meta-Tags aus <head>... </head>
, nichts wurde aus dem Körper extrahiert.
Ich habe auch versucht, diese
für Kurse in response.xpath ("// *"):
es funktioniert, aber das ist sehr ineffizient und erfordert viel Zeit zu extrahieren . Ich bin mir sicher, dass es einen effizienteren Weg gibt, dies zu tun.
Und hier ist Scrapy Code, wenn es hilft ...
Die ersten 2 Elemente (Seitentyp, pagefeatured) unter yeild in <head> ... <head>
Tag sind. Die letzten zwei Elemente (coursetloc, coursetfees) sind in <body ... </body>
Tag
Und ja, kann es seltsam aussehen, aber es gibt ‚Meta‘ Tags innerhalb <body>...</body>
in der Website von wo ich bin Schaben.
class MySpider(BaseSpider):
name = "dkcourses"
start_urls = ['http://www.example.com/scrapy/all-courses-listing']
allowed_domains = ["example.com"]
def parse(self, response):
hxs = Selector(response)
for courses in response.xpath("//body"):
yield {
'pagetype': ''.join(courses.xpath('.//meta[@name="dkpagetype"]/@content').extract()),
'pagefeatured': ''.join(courses.xpath('.//meta[@name="dkpagefeatured"]/@content').extract()),
'coursetloc': ''.join(courses.xpath('.//meta[@name="dkcoursetloc"]/@content').extract()),
'coursetfees': ''.join(courses.xpath('.//meta[@name="dkcoursetfees"]/@content').extract()),
}
for url in hxs.xpath('//ul[@class="scrapy"]/li/a/@href').extract()):
yield Request(response.urljoin(url), callback=self.parse)
Jede Hilfe wird sehr geschätzt. Dank
Post URL oder HTML-Code –
@ 宏杰 李 den Code der Veröffentlichung ... – Slyper
ich die URL der Website –