Ich bin neu in Python sowie Scrapy. Ich versuche, eine Seed-URL zu crawlen https://www.health.com/patients/status/.This Seed-URL enthält viele URLs. Aber ich will nur URLs holen, die Faci/Details/# somenumber aus dem Samen url .Die URL enthalten wie unten sein:web Crawlen und Extrahieren von Daten mit scrapy
https://www.health.com/patients/status/ ->https://www.health.com/Faci/Details/2
-> https://www.health.com/Faci/Details/3
-> https://www.health.com/Faci/Details/4
https://www.health.com/Faci/Details/2 -> https://www.health.com/provi/details/64
-> https://www.health.com/provi/details/65
https://www.health.com/Faci/Details/3 -> https://www.health.com/provi/details/70
-> https://www.health.com/provi/details/71
Innerhalb jeder https://www.health.com/Faci/Details/2 Seite gibt es https://www.health.com/provi/details/64 https://www.health.com/provi/details/65 ... .Schließlich Ich möchte um einige Daten von https://www.health.com/provi/details/#somenumber url.Wie kann ich das gleiche erreichen?
Ab jetzt habe ich den Code unten aus scrapy Tutorial versucht, und nur in der Lage URL zu kriechen, die https://www.health.com/Faci/Details/#somenumber .Seine nicht zu gehen https://www.health.com/provi/details/#somenumber .Ich enthält versucht Grenze zu setzen Tiefe in settings.py file.But hat es nicht funktioniert .
import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from news.items import NewsItem
class MySpider(CrawlSpider):
name = 'provdetails.com'
allowed_domains = ['health.com']
start_urls = ['https://www.health.com/patients/status/']
rules = (
Rule(LinkExtractor(allow=('/Faci/Details/\d+',)), follow=True),
Rule(LinkExtractor(allow=('/provi/details/\d+',)),callback='parse_item'),
)
def parse_item(self, response):
self.logger.info('Hi, this is an item page! %s', response.url)
item = NewsItem()
item['id'] = response.xpath("//title/text()").extract()
item['name'] = response.xpath("//title/text()").extract()
item['description'] = response.css('p.introduction::text').extract()
filename='details.txt'
with open(filename, 'wb') as f:
f.write(item)
self.log('Saved file %s' % filename)
return item
Bitte helfen Sie mir weiter vorgehen?