performScrape method
Performs a web scraping operation based on the provided request
Implementation
Future<void> performScrape(ScrapeRequest request) async {
_setLoading(true);
_clearError();
try {
// Create new scraper instance
_currentScraper = MobileScraper(url: request.url);
// Load HTML content
await _currentScraper!.load();
List<String> results;
ScrapeType scrapeType;
// Execute scraping based on request type
switch (request.type) {
case ScrapeRequestType.tagBased:
final tagReq = request.tagRequest!;
results = _currentScraper!.queryAll(
tag: tagReq.tag,
className: tagReq.className,
id: tagReq.id,
);
scrapeType = ScrapeType.tagBased;
break;
case ScrapeRequestType.regexBased:
final regexReq = request.regexRequest!;
results = _currentScraper!.queryWithRegex(
pattern: regexReq.pattern,
group: regexReq.group,
);
scrapeType = ScrapeType.regexBased;
break;
}
// Create successful result
final result = ScrapeResult.success(
data: results,
url: request.url,
type: scrapeType,
);
_setCurrentResult(result);
_addToHistory(result);
} catch (e) {
// Create failure result
final result = ScrapeResult.failure(
url: request.url,
error: e.toString(),
type: request.type == ScrapeRequestType.tagBased
? ScrapeType.tagBased
: ScrapeType.regexBased,
);
_setError(e.toString());
_setCurrentResult(result);
_addToHistory(result);
} finally {
_setLoading(false);
}
}